1. 程式人生 > 其它 >MySQL的連線查詢

MySQL的連線查詢

技術標籤:MySql資料庫sqlmysql

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;

參考文章

Mysql—— 內連線、左連線、右連線以及全連線查詢

Mysql中的關聯查詢(內連線,外連線,自連線)