안녕하세요,
mysql query 에서 잘 이해가지 않는 부분이 있어서 질문드립니다.
다음과 같이 0건이 나오게 하고 싶습니다.
select * from Customer where Division not in ('01','02','03');
결과 => 0건
그래서 concat 과 group_concat 을 넣어 sql을 작성하고,
결과값으로 '01,'02','03' 가 나오는 것을 확인하였습니다.
select concat('\'', group_concat(value separator '\'\,\''), '\'') val
from (select id from ComCd where value = 'cd004') a, ComCd b
where b.parentId = a.id
결과 => '01,'02','03'
그런데 위의 결과를 가지고 활용을 하면 전혀 not in 조건에 걸리지 않고 모든 건이 출력됩니다.
select * from Customer where Division not in (
select concat('\'', group_concat(value separator '\'\,\''), '\'') val
from (select id from ComCd where value = 'cd004') a, ComCd b
where b.parentId = a.id
);
대체 왜 이러는 걸까요??
not in 조건에 직접 값을 넣으면 정상작동하고, subquery 로 작성하여 넣으면 필터가 안되요.
힌트좀 알려주세요.
|