MySQL的連線查詢
阿新 • • 發佈:2020-12-21
MySQL的連線查詢型別有:內連線、左外連線、右外連線,自連線
1. 內連線
關鍵字:inner join......on
說明:組合兩個表中的記錄,返回關聯欄位符合查詢條件的記錄,也就是返回兩個表的交集(陰影)部分。
select *
from table1 inner join table2
where table1.id = table2.id
2. 左外連線
關鍵字:left outer join......on
說明:左(外)連線,左表(table1)的記錄將會全部表示出來,而右表(table2)只會顯示符合查詢條件的記錄。右表記錄不足的地方均為NULL。或者:是指以左邊的表的資料為基準,去匹配右邊的表的資料,如果匹配到就顯示,匹配不到就顯示為null
SELECT t1.col1, t2.col2
FROM table1 t1 LEFT OUTER JOIN table2 t2
ON t1.id = t2.id;
3. 右外連線
和左外連線同理,不贅述
4. 全外連線
顧名思義,把兩張表的欄位都查出來,沒有對應的值就顯示null,但是注意:MySql是沒有全外連線的(MySql中沒有full outer join關鍵字),想要達到全外連線的效果,可以使用union關鍵字連線左外連線和右外連線。
select e.empName,d.deptName FROM t_employee e left JOIN t_dept d ON e.dept = d.id UNION select e.empName,d.deptName FROM t_employee e RIGHT JOIN t_dept d ON e.dept = d.id;
UNION求兩個結果集的並集,UNION連線的查詢也較組合查詢或符合查詢。UNION會自動去除重複行,如果不喜歡去除重複行可以用UNION ALL。
5. 自連線
自連線查詢就是當前表與自身的連線查詢,關鍵點在於虛擬化出一張表給一個別名
例如:查詢員工以及他的上司的名稱,由於上司也是員工,所以這裡虛擬化出一張上司表
SELECT e.empName,b.empName
from t_employee e LEFT JOIN t_employee b
ON e.bossId = b.id;