假設我們有一個表答:雙向外部聯接
itemid mark
1 5
2 3
和表B:
itemid mark
1 3
3 5
我想加入對A * B = A.itemid既B.itemid左右方法。即結果:
itemid A.mark B.mark
1 5 3
2 3 NULL
3 NULL 5
有沒有辦法在MySQL的一個查詢中做到這一點?
假設我們有一個表答:雙向外部聯接
itemid mark
1 5
2 3
和表B:
itemid mark
1 3
3 5
我想加入對A * B = A.itemid既B.itemid左右方法。即結果:
itemid A.mark B.mark
1 5 3
2 3 NULL
3 NULL 5
有沒有辦法在MySQL的一個查詢中做到這一點?
這就是所謂的全外連接,它不是在MySQL原生支持,從它的docs判斷。您可以使用UNION解決此限制,如鏈接到頁面的評論中所述。
由於其他人張貼片段,在這裏你去。您可以在鏈接的頁面上看到解釋。
SELECT *
FROM A LEFT JOIN B ON A.id = B.id
UNION ALL
SELECT *
FROM A RIGHT JOIN B ON A.id = B.id
WHERE A.id IS NULL
可以做一些工作,但這裏是一些SQL
select distinct T.itemid, A.mark as "A.mark", B.mark as "B.mark"
from (select * from A union select * from B) T
left join A on T.itemid = A.itemid
left join B on T.itemid = B.itemid;
這依賴於左連接,它返回原來的表中的所有行(在這種情況下,這是子查詢表T)。如果連接表中沒有匹配,則將該列設置爲NULL。
這對我的作品在SQL Server上:
select isnull(a.id, b.id), a.mark, b.mark
from a
full outer join b on b.id = a.id
問題明確指出MySQL – cdeszaq 2013-02-19 18:35:17