用IN选择给出错误的结果

时间:2014-09-29 14:57:09

标签: php mysql sql select

字段编辑value '3,2,4'

sql语句

SELECT * FROM `table` where '3' in (editors)

结果1行=正确

SELECT * FROM `table` where '2' in (editors)

结果0行=不正确。

我认为value '3,2,4'被视为一个字符串,如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

您必须使用FIND_IN_SET()或像

这样的可怕构造
  WHERE editors='2' 
    OR editors LIKE '2,%'
    OR editors LIKE '%,2,%'
    OR editors LIKE '%,2'

现在您的查询被解释为

 WHERE '2' IN ('1,2,3')
 a.k.a
 WHERE '2' = '1,2,3'

而不是

 WHERE '2' IN ('1', '2', '3')
 a.k.a.
 WHERE '2' = '1' OR '2' = '2' OR '2' = '3'

就像你想要它一样。