2011-10-04 67 views
2

所以我有2個表格。Mysql not union

表1:

ID CUST_NO 
1 51555 
2 51556 
3 51111 
4 44444 
5 54878 
6 13548 

和表2:

ID CUST_NO 
1 51555 
2 51556 
3 31333 
4 97948 
5 65488 
6 14648 
. ..... 

我知道我可以使用聯盟來獲得CUST_NO的出現既表所示。不過,我需要出現在表1 CUST_NO的名單,但沒有在表2中

因此,對於這樣的結果應該是

51111 
44444 
54878 
13548 

我敢打賭,這是很容易的,但我不能現在不用我的頭,有什麼想法?

+0

嗯,不錯,三個不同的糾正在一分鐘的跨度答案。 –

回答

3
select t1.CUST_NO 
from Table1 t1 
left outer join Table2 t2 on t1.CUST_NO = t2.CUST_NO 
where t2.CUST_NO is null 
1

一個NOT IN子查詢是最簡單的,雖然可能不是最快的:

SELECT 
    ID, 
    CUST_NO 
FROM tab1 
WHERE CUST_NO NOT IN (SELECT CUST_NO FROM tab2); 
+0

我不太確定這是否是最快的解決方案,至少在某些情況下是這樣。它可能取決於兩個表的相對大小,以及是否存在索引。如果表2很小,這可能非常有效;如果它比表1大得多,並且在cust_no上有索引,Dippi的解決方案可能會更好。不知道左連接如何比較。 –

2
select cust_no 
from table1 
where not exists 
(select cust_no from table2 where table2.cust_no = table1.cust_no)