MSSQL where 조건 in절에 필드 여러개 사용 못하나요? 0 2 14,802

by 통합문서 [SQLServer] [2016.08.05 10:16:38]


아래 오라클 처럼 사용안되나요?

select id, no from test1
where (id, no) not in (
          select id, no from test2)

 

아래와 같이 오류가 나네요.

조건이 필요한 컨텍스트(위치 ',')에 부울이 아닌 유형의 식이 지정되었습니다.

by 마농 [2016.08.05 10:48:20]
-- 테스트 해보니 정말 안되네요?
-- (NOT IN) 은 (NOT EXISTS) 또는 (Outer Join & Null Check) 방식으로 변경 가능합니다.
SELECT id, no
  FROM test1 a
 WHERE NOT EXISTS (SELECT 1
                     FROM test2 b
                    WHERE b.id = a.id
                      AND b.no = a.no
                   )
;
SELECT a.id, a.no
  FROM test1 a
  LEFT OUTER JOIN test2 b
    ON b.id = a.id
   AND b.no = a.no
   AND b.no IS NULL
;

 


by 통합문서 [2016.08.15 23:06:22]

네 답변감사합니다.!! mssql은 오라클에 비해 제약이 많네요..

단순 필터링일 경우 아래와 같이 사용한다고도 합니다. 약간 편법같지만..

select id, no from test1
where (id + no) not in (
          select id + no from test2)

여기서 + 는 오라클의 || (concat)과 같습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입