2015-10-20 61 views
1
table: A 
----------- 
value 
1 
2 
3 

sub-query: B 
----------- 
value 
2 

我需要(A - B)。使用可能爲空的子查詢從表中減去行

下面的查詢在B不爲空時有效。如預期的那樣輸出=(1,3)。

SELECT * FROM A 
JOIN B 
ON (A.value != B.value) 

但是,當子查詢B爲空時,JOIN執行A與空B的交集,並且輸出爲空結果集。

如果我使用LEFT JOIN,它不減去從表A

含有值2的行是否有可能寫爲單個查詢(A - B),而不管B是否是空的或不。

回答

2
SELECT A.* 
FROM A 
LEFT JOIN B 
ON A.value = B.value 
WHERE b.value IS NULL 
+0

這很快......並且完美地工作。謝謝。強制性的8分鐘後,我會接受它作爲答案。 –

+0

不客氣!祝你的項目好運! :-) – Alex