2013-04-21 1 views
0

where 절에서 IN 키워드를 사용하여 데이터를 선택하는 SQL 문이 있지만 선택 항목에없는 데이터를 선택할 수 있기를 원합니다. IN 절에서 전달되는 IN (1,2,6,4) 형식의 목록을 갖게됩니다. 하지만 IN 절에있는 것과 일치하지 않는 다른 모든 데이터를 선택할 수 있기를 원합니다. 여기 내 sample sqlmysql은 IF NOT IN 키워드 또는 대안을 사용하여 다른 모든 데이터를 선택합니다.

WHERE pf.filter_value_id IN(1) 

에 대한 링크입니다 그러나 나는 또한 IN 절을 사용하여 전달되는 데이터를 선택할 수 있어야합니다. 작동하지 않는

WHERE pf.filter_value_id IS NOT IN(1) // this doesn't work 

SLQ :

SELECT p.product_id, p.title, fv.filter_value 
    FROM products p  
    INNER JOIN product_filters pf on pf.product_id = p.product_id 
    LEFT JOIN filters f on f.filter_id = pf.filter_id 
    RIGHT JOIN filter_values fv on fv.filter_value_id = pf.filter_value_id 
WHERE pf.filter_value_id IS NOT IN(1) 
+1

'NOT IN'이 아니라'IS NOT IN'입니다. 'IS'는'IS NULL' 또는'IS NOT NULL'에서만 사용됩니다. – zerkms

답변

2

IS NOT IN 유효 MySQL을하지 않습니다. 쿼리 구문 오류가 있는지 확인해야합니다. 대신 IN 절의 negation을 확인하기 만하면됩니다. 그냥 NOT IN이 필요합니다.

관련 문제