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
'DB > MSSQL' 카테고리의 다른 글
[MSSQL] 특정컬럼 포함 테이블 조회 (0) | 2024.08.12 |
---|---|
[MSSQL] sp_who2 필터링 조회 (0) | 2024.08.12 |
[MSSQL] [날짜] 1.날짜 연산 함수(DATEADD, DATEDIFF) (0) | 2024.02.28 |
[MSSQL] 컬럼 문자열 합치기 (STRING_AGG(), STUFF()) (0) | 2024.02.27 |
[MSSQL] 이모지(Emoji) 저장 및 비교 조회하기 (0) | 2024.02.23 |