1. 오류 : NOT 의 위치가 틀렸네요.
- 서브쿼리 안쪽 LIKE 앞에 NOT을 붙일게 아니라
- 서브쿼리 바깥쪽 IN 앞에 NOT을 붙여야 합니다.
2. 개선
- LIKE 보다는 INSTR
- DISTINCT 불필요
- a.c1 IS NOT NULL 조건 불필요
3. 다양한 방법
- NOT IN
- NOT EXISTS
- OUTER JOIN & IS NULL
-- NOT IN -- SELECT a.no , a.name , a.c1 FROM tab1 a WHERE a.no NOT IN (SELECT a.no FROM tab2 u WHERE INSTR(a.c1, u.c2) > 0 ) ; -- NOT EXISTS -- SELECT a.no , a.name , a.c1 FROM tab1 a WHERE NOT EXISTS (SELECT 1 FROM tab2 u WHERE INSTR(a.c1, u.c2) > 0 ) ; -- OUTER JOIN & IS NULL SELECT a.no , a.name , a.c1 FROM tab1 a LEFT OUTER JOIN tab2 u ON INSTR(a.c1, u.c2) > 0 WHERE u.c2 IS NULL ;