MySql中多表查詢只提供了內連接,左外連接與右外連接:
table_reference {[INNER] JOIN | {LEFT|RIGHT} [OUTER] JOIN} table_reference ON conditional_expr
SELECT * FROM emp e JOIN dept d ON e.deptno=d.deptno;
在左外連接和右外連接時都會以一張表為基表,該表的內容會全部顯示,然後加上兩張表格相符的內容。
如果基底表的資料在另一張表沒有記錄。
那麼在相關聯的結果集行中列顯示為空值(NULL)。
SELECT * FROM emp e LEFT JOIN dept d ON e.deptno=d.deptno;
SELECT * FROM emp e RIGHT JOIN dept d ON e.deptno=d.deptno;
左表和右表都不做限制,所有的記錄都顯示,兩表不足的地方用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;請不要弄混。
以上是Mysql怎麼實現全外連接的詳細內容。更多資訊請關注PHP中文網其他相關文章!