2011-10-04 6 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)