問題描述
我想做一個全外連接 在 MySQL 中.這可能嗎?MySQL 是否支持全外連接?
推薦答案
你在 MySQL 中沒有 full joins,但你可以確定 模仿他們.
You don't have full joins in MySQL, but you can sure emulate them.
對于從這個堆棧溢出問題轉錄的代碼示例 你有:
For a code sample transcribed from this Stack?Overflow question you have:
有兩個表 t1、t2:
With two tables t1, t2:
SELECT * FROM t1
LEFT JOIN t2 ON t1.id = t2.id
UNION
SELECT * FROM t1
RIGHT JOIN t2 ON t1.id = t2.id
上述查詢適用于全外連接操作不會產生任何重復行的特殊情況.上面的查詢依賴于 UNION
集合運算符來刪除查詢模式引入的重復行.我們可以通過對第二個查詢使用 anti-join 模式來避免引入重復行,然后使用 UNION ALL 集合運算符將兩個集合組合起來.在更一般的情況下,全外連接會返回重復的行,我們可以這樣做:
The query above works for special cases where a full outer join operation would not produce any duplicate rows. The query above depends on the UNION
set operator to remove duplicate rows introduced by the query pattern. We can avoid introducing duplicate rows by using an anti-join pattern for the second query, and then use a UNION ALL set operator to combine the two sets. In the more general case, where a full outer join would return duplicate rows, we can do this:
SELECT * FROM t1
LEFT JOIN t2 ON t1.id = t2.id
UNION ALL
SELECT * FROM t1
RIGHT JOIN t2 ON t1.id = t2.id
WHERE t1.id IS NULL
這篇關于如何在 MySQL 中進行完全外部聯接?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!