您的位置:首页 > 数据库

关于sql语句的inner join,left join ,right join的区别

2016-05-18 13:55 267 查看
         在这个阳光明媚的日子里,我决定做点什么,鉴于昨天面试的一家公司问了我这个问题,我就像顺便把这个问题给总结一下

         我先概念上讲一下,这三者都是用在表链接查询上面,不同的是返回的结果是不一样的,下面我就用A表和B 表阐述一下。

        A表

        id          name          stuid

        1            林亮            120120

        2            张华            120121
        3            刘聪            120122

        B表

        cid        cname      class       id

        1           语文           301         1

         2          数学            203         1

        3           语文           301          2

        4          英语            402          2

        5          美术            404

        这个表的设计只是简单的举例子,不是很合理,关键是这三个join方法的使用

   1.    select  A.name,A.stuid,B.class from A
inner join  B where A.id = B.id

      结果集:

        name          stuid            class 

        林亮            120120       301

        林亮            120120       203

        张华            120121      301

        张华            120121      401

      查询的表A和表B中只有相对应的数据会显示出来

    2.      select  A.name,A.stuid,B.class from A left  join  B where A.id = B.id

       结果集:

       name          stuid            class 

        林亮            120120       301

        林亮            120120       203

        张华            120121      301

        张华            120121      401

        刘聪            120122

        查询的表A中的数据库会全部出来,即使表B中没有对应的数据

     3.  select  A.name,A.stuid,B.class from A
right join  B where A.id = B.id

      结果集:

        name          stuid            class 

        林亮            120120       301

        林亮            120120       203

        张华            120121      301

        张华            120121      401

                                                404

      查询的表B中的数据会全部显示,即使表A中没有对应的数据

       

      
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息