MYSQL多个WHERE IN导致LIKE被忽略(?)

sam*_*sam 2 mysql sql

我有一个不起作用的查询.我通过使用单个IN语句解决了问题(我用来构建查询的库导致这种情况发生)但我仍然很好奇为什么会发生这种情况.

查询如下:

SELECT * FROM (`table`) 
WHERE     `field` = 'false' 
      AND `something` LIKE '%string%' 
      AND `status_id` IN ('1') 
      OR `status_id` IN ('2') 
      OR `status_id` IN ('3') 
Run Code Online (Sandbox Code Playgroud)

对我的查询是有道理的:选择表格中的所有内容,其中field = false,类似字符串,状态ID为1或状态ID为2或状态ID为3

当有多个IN语句时,查询的LIKE部分将被完全忽略.

任何想法为什么mutliple IN语句会导致LIKE被忽略?我无法理解为什么:重新安排查询没有影响(将LIKE移动到结束与开始)

Pre*_*gha 5

Precendence?你不应该使用括号来区分AND和OR吗?status_idIN('x')如果为true则导致表达式的其余部分被忽略.

SELECT * FROM (`table`) 
WHERE     `field` = 'false' 
      AND `something` LIKE '%string%' 
      AND (`status_id` IN ('1') 
            OR `status_id` IN ('2') 
            OR `status_id` IN ('3') 
      )
Run Code Online (Sandbox Code Playgroud)

这是一样的

SELECT * FROM (`table`) 
WHERE     `field` = 'false' 
      AND `something` LIKE '%string%' 
      AND `status_id` IN ('1', '2', '3')
Run Code Online (Sandbox Code Playgroud)

看看这出来的东西,亲自尝试一下.

SELECT * FROM (`table`) 
WHERE     `field` = 'false' 
      AND `something` LIKE '%string%' 
      AND `status_id` IN ('1') 
      OR 1=1    
Run Code Online (Sandbox Code Playgroud)

问问自己这个查询应该返回什么