2014-07-10 2 views
1

그래서 하나의 열 대신 여러 열을 사용하는 WHERE IN 절을 사용하려고합니다.SQL - WHERE IN 절을 사용하여 여러 열 선택

이것은 내가 뭘하려하지만 오류가 점점 계속 :

"error near "," ... " 

진술 :

SELECT 
    * 
FROM 
    language 
WHERE 
    (char1 , char2, char3, char4) in (('H' , 'H', 'B', 'B') , ('B' , 'B', 'B', 'M')) 
     AND language.type = 'M' 

내가 여기에 오류가 무엇인지 확실하지 않다 있습니다. 나는 비슷한 것을 시도해 본 사람이 있는지 궁금해하고 있었다. 그것은 사소한 질문처럼 보입니다. 고맙습니다.

답변

7

그 IN 절 (적어도 그런 식으로)로.

한 가지 방법은 사용하는 것 또는 당신이 정말로 싶어 IN 절을 사용하는 경우 절은

((char1 = 'H' and char2 = 'H' and char3 = 'B' and char4 = 'B') or 
(char1 = 'B' and char2 = 'B' and char3 = 'B' and char4 = 'M')) 

and language.type = 'M' 

, 당신은, 그래서 연결이 샘플 만 작동이 같은

뭔가를 (사용할 수 있습니다 필드와 검색된 값 사이에 구분 기호를 추가하여 조정해야 할 수도 있음)

where 
concat(char1, char2, char3, char4) IN ('HHBB', 'BBBM') 
+0

이것은 완벽합니다. 고맙습니다. 참고로, SQLite의 경우에는 concat가 작동하지 않으므로 (char1 || char2 || char3 || char4) 동일한 기능을 수행합니다. –

3

잘못된 구문입니다. 너 뭐하려고? 해당 열 4 개 모두가 대괄호 집합의 값과 정확히 일치하는지 확인하십시오.

그렇다면, 당신은 다음과 같이 지정해야합니다 : 당신은 할 수없는

WHERE language.type = 'M' AND 
((char1 = 'H' AND char2 = 'H' AND char3 = 'B' AND char4 = 'B') OR 
(char1 = 'B' AND char2 = 'B' AND char3 = 'B' AND char4 = 'M')) 
관련 문제