Mysql中的全外連接


首先,mysql本身是沒有提供全外連接的,

MySql中多表查詢只提供了內連接,左外連接與右外連接:
table_reference {[INNER] JOIN | {LEFT|RIGHT} [OUTER] JOIN} table_reference ON conditional_expr

1】INNER JOIN ON內連接(只寫join時默認為內連接)
SELECT * FROM emp e JOIN dept d ON e.deptno=d.deptno;
內連接

2】外連接:在左外連接和右外連接時都會以一張表為基表,該表的內容會全部顯示,然后加上兩張表匹配的內容。如果基表的數據在另一張表沒有記錄。那么在相關聯的結果集行中列顯示為空值(NULL)。

2.1、左外連接:顯示左表的全部記錄
SELECT * FROM emp e LEFT JOIN dept d ON e.deptno=d.deptno;
左外連接

2.2、右外連接:顯示右表的全部記錄
SELECT * FROM emp e RIGHT JOIN dept d ON e.deptno=d.deptno;
右外連接
2.3、全外連接:左表和右表都不做限制,所有的記錄都顯示,兩表不足的地方用null 填充;
也就是:
左外連接=左表全部記錄+相關聯結果
右外連接=右表全部記錄+相關聯結果
全外連接=左表全部記錄+右表全部記錄+相關聯結果=左外連接+右外連接-相關聯結果(即去重復)

那么在MYSQL中誰可以做到呢?
UNION
UNION 操作符用於合並兩個或多個 SELECT 語句的結果集。
注釋:默認地,UNION 操作符選取不同的值。如果允許重復的值,請使用 UNION ALL。

故實現全外連接可以使用:
SELECT * FROM emp e LEFT JOIN dept d ON e.deptno=d.deptno
UNION
SELECT * FROM emp e RIGHT JOIN dept d ON e.deptno=d.deptno;
全外連接

注釋:以上連接全為等值連接;Oracle中全外連接可以使用full join;請不要弄混。

 

 

轉載:https://blog.csdn.net/tayngh/article/details/99692541


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM