使用IN进行选择会给出错误的结果


select with IN gives wrong result

字段编辑器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'被视为一个字符串,如何解决这个问题?

您将不得不使用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'

就像你想要的那样。其中

相关文章: