五種關聯查詢:
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