2015-12-09 75 views
0

我有兩個表(實際上我有多個表,但對於這個問題我只需要兩個表)。我想從滿足條件的一個表中選擇所有值。條件是 - 選擇所有在第二個表中未被引用的值。要更清楚一點:假設你有一張桌子和你的朋友的名字,地址和電話號碼。他們也打算給你他們的生日,你想在第二張桌子上儲存。現在你想找到所有還沒有給你生日的人。所以你想要列出一張表中與第二張表中的值相關的值爲空的所有信息。從一個表中選擇參考另一個表的所有值,但是缺失的值是

我曾嘗試以下:

SELECT A.value1, A.value2, A.value3 
FROM Table A, Table B 
WHERE A.PrimaryKey=B.PrimaryKey 
AND B.value1 = NULL; 
+0

你可以顯示虛擬數據,以便我們可以幫助它失蹤 –

回答

5

您正在使用隱式inner join語法,當你需要一個left join

SELECT A.value1, A.value2, A.value3 
FROM TableA A 
LEFT JOIN TableB B 
    ON A.PrimaryKey=B.PrimaryKey 
WHERE B.value1 IS NULL; 
+0

從表A'應該從'A',與左連接表相同。 – amdixon

+0

@amdixon,你是對的,我一味地複製。 OP – HoneyBadger

+0

沒有提到表名,所以左連接考慮了整個第一個表,然後只查看第一個和第二個表之間的交叉,忽略第二個表中不存在交叉的所有值? – bystrik

0

使用左加入您的查詢如下:

SELECT A.value1, A.value2, A.value3 
FROM A 
LEFT JOIN B 
ON A.PrimaryKey=B.PrimaryKey 
WHERE B.value1 IS NULL; 
+0

應該從A – amdixon

+0

複製自上述查詢,現在檢查 –

相關問題