SQL SERVER (A,B) IN ((..,..), (..,..)) 쿼리 문의 0 1 1,265

by captain [SQLServer] [2017.06.08 15:07:11]


안녕하세요. 

 

(a, b) in ((항목1, 항목2), (항목3, 항목4)....) 쿼리를 SQL Server에 적용하려 보니,

SQL Server는 해당 방식의 쿼리를 지원하지를 않습니다. ㅠㅠ

 

목록 데이타가 넘어와서 위의 방식으로 해주지 않게 되면, 아래처럼 해야 하는데,

B의 타입이 달라서, 형변환을 하게 되어 인덱스를 타지 못합니다. 무지 느려지네요..

 

A + CONVERT(VARCHAR(), B) IN ((항목1+2), (항목3+4)....)

 

뭔가 효율적으로 할수 있는 방법이 없을까요?.. 

 

경험있으신분들의 조언 부탁드립니다.

 

감사합니다.

by 마농 [2017.06.08 16:02:06]
WITH t AS
(
SELECT 1 c1, 1 c2
UNION ALL SELECT 1, 2
UNION ALL SELECT 2, 1
UNION ALL SELECT 2, 2
)
SELECT *
  FROM t
-- WHERE (c1, c2) IN ((1, 1), (1, 2), (2, 1))  -- error
 WHERE ( (c1 = 1 AND c2 = 1) OR
         (c1 = 1 AND c2 = 2) OR
         (c1 = 2 AND c2 = 1) )
;

 

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