mysql使用IF NOT IN关键字或替代选择所有其他数据

时间:2013-04-21 23:40:14

标签: php mysql

我有一个sql语句,它根据在where子句中使用IN关键字选择数据,但我希望能够选择不在传入的select参数中的数据。我将有一个列表IN(1,2,6,4)形式,在IN子句中传递。但我希望能够选择与IN子句中的内容不匹配的所有其他数据。这是我sample sql

的链接
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 个答案:

答案 0 :(得分:2)

IS NOT IN无效MySQL。您应该确保检查查询语法错误。相反,您只想检查IN子句的negation。只需NOT IN即可。