gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 01:23:08 24 4
gpt4 key购买 nike

我有一个查询不起作用。我已经通过使用单个 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')

查询对我来说是有道理的:从表中选择所有字段 = false 的东西,比如字符串和状态 ID 在 1 中,或者状态 ID 在 2 中,或者状态 ID 在 3 中

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

知道为什么多个 IN 语句会导致 LIKE 被忽略吗?我不知道为什么:重新安排查询没有影响(将 LIKE 移到末尾而不是开始)

最佳答案

优先? AND 和 OR 不应该用括号来区分吗? status_id IN ('x') 如果为真,将导致表达式的其余部分被忽略。

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')
)

相同
SELECT * FROM (`table`) 
WHERE `field` = 'false'
AND `something` LIKE '%string%'
AND `status_id` IN ('1', '2', '3')

亲自尝试一下,看看结果如何。

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

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

关于MYSQL多个WHERE IN导致LIKE被忽略(?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11697653/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com