gpt4 book ai didi

mysql - 疯狂的 mysql 行为几乎相同的查询得到不同的结果

转载 作者:行者123 更新时间:2023-12-01 00:10:05 25 4
gpt4 key购买 nike

我正在尝试在我的网站中添加搜索功能。当我尝试时,我得到了非常疯狂的结果。

这个查询工作正常:

SELECT * FROM (`products`) 
JOIN `products_field` ON `products`.`id` = `products_field`.`prod_id`
WHERE menu_id=569 OR menu_id=952 AND (products.title LIKE '%mcgregor%' OR products_field.value LIKE '%mcgregor%')
GROUP BY `prod_id`

但是当我像您在下面看到的那样更改菜单 ID 的位置时,它会得到其中没有任何 mcgregor 的结果:

SELECT * FROM (`products`) 
JOIN `products_field` ON `products`.`id` = `products_field`.`prod_id`
WHERE menu_id=952 OR menu_id=569 AND (products.title LIKE '%mcgregor%' OR products_field.value LIKE '%mcgregor%')
GROUP BY `prod_id`

我做错了什么?

最佳答案

这样写

WHERE menu_id=952 OR menu_id=569 AND ...

当 menu_id = 952 并且 -OR- 右侧的内容甚至不被评估时,对 mysql 被认为是匹配(真),因为你说的是​​ this OR the other(where 声明的其余部分) 你可以像这样包装这个 OR:

WHERE (menu_id=952 OR menu_id=569) AND ...

或者你可以这样走:

WHERE menu_id IN (952,569) AND ...

关于mysql - 疯狂的 mysql 行为几乎相同的查询得到不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25709942/

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