Mysql之如何實現(xiàn)全外連接
MySql中多表查詢只提供了內(nèi)連接,左外連接與右外連接:
table_reference {[INNER] JOIN | {LEFT|RIGHT} [OUTER] JOIN} table_reference ON conditional_expr
1】INNER JOIN ON內(nèi)連接(只寫join時默認為內(nèi)連接)
SELECT * FROM emp e JOIN dept d ON e.deptno=d.deptno;
2】外連接
在左外連接和右外連接時都會以一張表為基表,該表的內(nèi)容會全部顯示,然后加上兩張表匹配的內(nèi)容。
如果基表的數(shù)據(jù)在另一張表沒有記錄。
那么在相關聯(lián)的結(jié)果集行中列顯示為空值(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 填充;
也就是:
- 左外連接=左表全部記錄+相關聯(lián)結(jié)果
- 右外連接=右表全部記錄+相關聯(lián)結(jié)果
- 全外連接=左表全部記錄+右表全部記錄+相關聯(lián)結(jié)果=左外連接+右外連接-相關聯(lián)結(jié)果(即去重復)
那么在MYSQL中誰可以做到呢?
UNION
UNION 操作符用于合并兩個或多個 SELECT 語句的結(jié)果集。
注釋:默認地,UNION 操作符選取不同的值。如果允許重復的值,請使用 UNION ALL。
故實現(xiàn)全外連接可以使用:
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;請不要弄混。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
mysql?數(shù)據(jù)備份與恢復使用詳解(超完整詳細教程)
這篇文章主要介紹了mysql?數(shù)據(jù)備份與恢復使用詳解,根據(jù)實際的業(yè)務需求,經(jīng)驗參考可以據(jù)數(shù)據(jù)規(guī)模大小,服務器磁盤容量,大致是分為全備和增備,差異備份,本文給大家詳細講解需要的朋友可以參考下2022-11-11MySQL 如何設計統(tǒng)計數(shù)據(jù)表
有些時候,改進數(shù)據(jù)表查詢性能的最佳方式是在同一張數(shù)據(jù)表中冗余一些繼承的數(shù)據(jù)。然而,有些時候需要新建完全獨立的統(tǒng)計或緩存數(shù)據(jù)表,尤其是在需要反復查詢的需求情況下。如果業(yè)務允許一些時間上的誤差的話,那么這種方式會更好。2021-06-06解決Mysql5.7.17在windows下安裝啟動時提示不成功問題
這篇文章主要介紹了解決Mysql5.7.17在windows下安裝啟動時提示不成功問題,需要的朋友可以參考下2017-03-03