我需要能夠顯示實際上不存在於第二個表中的行的結果。我嘗試過左連接,但它似乎不適合我需要做的事情。我有2個表,例如:SQL |第二個表沒有匹配行時是否加入左連接?
Table1
NAME | KEY
John 12345
Frank 23456
Table2
KEY | LIST | STATUS
12345 10001 1
12345 10003 0
23456 10001 1
23456 10002 1
我需要能夠顯示的結果是這樣的:
NAME | KEY | LIST | STATUS
John 12345 10001 1
John 12345 10002 (null)
John 12345 10003 0
Frank 23456 10001 1
Frank 23456 10002 1
Frank 23456 10003 (null)
但我無法弄清楚如何做到這一點,因爲這些記錄,將返回一個空值實際上不存在於第二個表中。如果我一次只運行一個,我可以通過做一個UNION ALL來獲得我需要的結果,但這不是有效的(我還必須重新排序我的結果,這也使得它更難)
SELECT b.list, a.name, a.key, b.status
FROM table1 a JOIN table2 b ON a.key = b.key
WHERE a.name = 'John'
UNION ALL
SELECT distinct(b.list), NULL AS "a.name", NULL AS "a.key", NULL AS "b.status"
FROM table2 b
這不是一個理想的解決方案,因爲我拉動了其餘的列表,但其他字段最終爲空,因此當我將結果移動到excel時,我必須手動粘貼它們。
任何想法?我真的認爲我應該可以通過左連接來完成這項工作,但是我似乎沒有做任何工作。
您使用的是什麼版本的SQL? –