zoukankan      html  css  js  c++  java
  • mysql的join

    语法:FROM table1 LEFT JOIN table2 ON table1.field1 compopr table2.field2  
    说明:table1, table2参数用于指定要将记录组合的表的名称。 
       field1, field2参数指定被联接的字段的名称。且这些字段必须有相同的数据类型及包含相同类型的数据,但它们不需要有相同的名称。
       compopr参数指定关系比较运算符:"=", "<", ">", "<=", ">=" 或 "<>"。 

    以下两个表
    表A记录如下:                                 表B记录如下: 
    aID        aNum               bID        bName
    1           a201501                           1            b201601
    2           a201502              2            b201602
    3           a201503              3            b201603
    4           a201504              4            b201604
    5           a201505            8            b201608

    1.left join(左联接) 

    select * from a left join b on a.aID = b.bID

    结果如下: 
    aID        aNum                      bID           bName 
    1            a201501             1               b201601 
    2            a201502             2               b201602 
    3            a201503             3               b201603 
    4            a201504             4               b201604 
    5            a201505             NULL       NULL 

    结果说明: 
            left join是以A表的记录为基础的,A可以看成左表,B可以看成右表,left join是以左表为准的. 
    换句话说,左表(A)的记录将会全部表示出来,而右表(B)只会显示符合搜索条件的记录(例子中为: A.aID = B.bID). 
    B表记录不足的地方均为NULL. 

    2.right join(右联接) 

    select * from a right join b on a.aID = b.bID

    结果如下: 
    aID        aNum                      bID           bName 
    1            a201501             1               b201601 
    2            a201502             2               b201602 
    3            a201503             3               b201603 
    4            a201504             4               b201604 
    NULL      NULL           8               a201508        

    结果说明: 
            仔细观察一下,就会发现,和left join的结果刚好相反,这次是以右表(B)为基础的,A表不足的地方用NULL填充. 

    3.inner join(相等联接或内联接) 

    select * from a innner join b on a.aID = b.bID

    等同于以下SQL句: 

    select * from a,b where a.aID = b.bID

    结果如下: 
    aID        aNum                      bID           bName 
    1            a201501             1               b201601 
    2            a201502             2               b201602 
    3            a201503             3               b201603 
    4            a201504             4               b201604 

    结果说明: 
            很明显,这里只显示出了 A.aID = B.bID的记录.这说明inner join并不以谁为基础,它只显示符合条件的记录.


  • 相关阅读:
    两数相加[链表加法] LeetCode.2
    无重复字符的最长子串[双指针+哈希表] LeetCode.3
    Rikka with Game[技巧]----2019 杭电多校第九场:1005
    度度熊与排列[搜索+剪枝]----2019 年百度之星·程序设计大赛
    度度熊与数字[公因数]----2019 年百度之星·程序设计大赛
    最大层内元素和----leetcode周赛150_1002
    拼写单词[哈希表]----leetcode周赛150_1001
    Seq[找规律]----2019 年百度之星·程序设计大赛
    实验三
    实验二
  • 原文地址:https://www.cnblogs.com/floraCnblogs/p/mysql-join.html
Copyright © 2011-2022 走看看