B.b에 없는 값만 A.a에서 찾을려고 아래 쿼리를 돌리니까 0개로 나오네요. (분명히 5개가 나와야합니다.)
select a from A
where a not in (select b from B)
그래서 not in 이 아니라 in,으로 바꾸면 값이 10개가 잘나옵니다.
select a from A
where a in (select b from B)
테스트삼아 몇개 해보니까 not in 으로는 값이 하나도 안나오던데...
not in 은 값이 안나오는 이유가 뭘까요?
Comment 4
-
나는짱이야
2014.08.22 14:01
-
파파곰
2014.08.22 15:09
네 데이터 여러개 나옵니다.
-
Hisory
2014.08.22 14:59
혹시 A 테이블 a 컬럼에 null 이 있지는 않나여??
아래 간단히 테스트해본 결과입니다.
declare @tb1 table
(
tt varchar(10)
)declare @tb2 table
(
tt varchar(10)
)insert @tb1(tt)
values('111'),(null),('222')insert @tb2(tt)
values('111') ,('222')-- Not IN 사용
Select * From @tb1
where tt not in ( select tt from @tb2)-- Join 사용
Select t1.* from @tb1 as t1
left outer join @tb2 as t2 on
t2.tt = t1.tt
where t2.tt is null -
파파곰
2014.08.22 15:08
A.a컬럼에는 null없습니다.
join을 사용하던 except 를 사용하던 다른식으로 값은 낼수 있는데...
저렇게 간단한 쿼리문에서 not in 은 사용이 안되는걸까요?
이런식으로 한번더 not in 을 씌워주면 또 되네요;;;;;
select a from A
where a not in(
select a from A
whereain (select b from B))
elect b from B 이쿼리가 날리게 되면 여러개의 데이터 나오지 않나요?