DB/MSSQL
[MSSQL] 오라클의 다중 IN 절 -> MSSQL에서는 EXISTS로!
alien22c
2024. 7. 30. 07:09
728x90
728x90
오라클에서는 다중 IN 절이 가능하다.
MSSQL에서는 어떻게 쿼리를 작성해야할 지 고민한다면 "EXISTS"를 사용하면 된다.
다만, EXISTS 사용은 원하는 결과집합이 조회되는지 충분히 테스트해보고 적용바란다.
잘못 쿼리하면 필터링이 안되는 경우도 있으니 실수하지 말자.
확실히 하고 싶고 EXISTS 사용을 잘 모르겠으면 안전하게 JOIN문을 사용하도록!
Oracle 예시
SELECT * FROM T1 WHERE (A,B) IN (SELECT A,B FROM T2 WHERE C='N') |
DELETE FROM T1 WHERE (A,B) IN (SELECT A,B FROM T2 WHERE C='N') |
MSSQL 예시
SELECT A.* FROM T1 A WITH(NOLOCK) WHERE EXISTS (SELECT 1 FROM T2 B WHERE B.A=A.A AND B.B=A.B AND C='N') |
DELETE T1 FROM T1 WITH(NOLOCK) WHERE EXISTS (SELECT 1 FROM T2 B WHERE B.A = T1.A AND B.B =T1.B AND C='N') |
혹시라도 테이블 Alias 사용 시 에러가 발생한다면,
위의 DELETE구문에서처럼 Main 테이블명 그대로 명시하면 오류없이 정상 실행된다.
728x90
728x90