天天看點

五種關聯查詢

五種關聯查詢:

1. 交叉連接配接(CROSS JOIN)

2. 内連接配接(INNER JOIN)

3. 外連接配接(LEFT JOIN/RIGHT JOIN)

4. 聯合查詢(UNION 與 UNION ALL)

5. 全連接配接(FULL JOIN)

  • 交叉連接配接(沒有任何關聯條件,查詢所有表)
    select * form a,b,c 
               
    或者 :
    select * from a cross join b cross join c
               
  • 内連接配接(多表中同時符合某種條件的資料記錄的集合)
    select * from a,b where a.id = b.id
               
    或者 :
    select	* from a inner join b on a.id = b.id
               
    分析 :
    select	* from 表1 inner join 表2 on 條件
               
    内連接配接分為三類
    ①等值連接配接: on a.id = b.id
    
    ②不等值連接配接 : on a.id > b.id
    
    ③自連接配接: select * from a as a1 inner join a as a2 on a.id = a2.pid
    
    [自連接配接就是自己連接配接自己 條件id和pid]
               
INNER JOIN 可以縮寫為 JOIN
  • 外連接配接

    左外連接配接:

    LEFT OUTER JOIN 縮寫 LEFT JOIN
    以左表為主,先查詢出左表,按照ON之後關聯條件比對右表,沒有比對到的用NULL填充
               
    右外連接配接:
    RIGHT OUTER JOIN 縮寫 RIGHT JOIN
    以右表為主,先查詢出右表,按照ON之後關聯條件比對左表,沒有比對到的用NULL填充
               
  • 聯合查詢
    表的資料結構一定要一樣,把多個結果集集中到一起,UNION前的結果為基準
               

    union 相同的記錄行會合并

    union all 不會合并重複的記錄行

  • 全連接配接( 完整外部連接配接傳回左表和右表中的所有行)
    mysql中不支援全連接配接,可以使用LEFT JOIN 和 UNION 和 RIGHT JOIN 聯合使用
    select * from A left join B on A.id = b.id union select * from a right join on a.id = b.id