gpt4 book ai didi

当使用类似 %% 时,MySQL 查询返回整个表

转载 作者:行者123 更新时间:2023-11-29 10:41:28 25 4
gpt4 key购买 nike

当我使用以下查询搜索表格时,我得到了预期的结果

查询:

SELECT id,suppid,name FROM product WHERE suppid = 137 AND name LIKE '%a%' OR id LIKE '%a%'

我得到的结果:

+------+--------+-------------+
| id | suppid | name |
+------+--------+-------------+
| 1024 | 137 | Cable Modem |
| 1026 | 137 | Moto Razr |
+------+--------+-------------+

但是当我从 LIKE 部分删除所有字母时,它会返回整个表格,完全忽略 WHERE supportid = 137

下面的查询是问题所在

SELECT id,suppid,name FROM product WHERE suppid = 137 AND name LIKE '%%' OR id LIKE '%%'

我得到的结果:

+------+--------+----------------+
| id | suppid | name |
+------+--------+----------------+
| 1001 | 130 | Router |
| 1002 | 121 | Youtube |
| 1003 | 114 | Bucket |
| 1004 | 115 | Windows |
| 1005 | 118 | Jio |
| 1006 | 117 | Fan |
| 1007 | 133 | Oled Display |
| 1009 | 117 | Modem |
| 1010 | 118 | Fibre |
| 1011 | 113 | Stand |
| 1012 | 135 | Broom |
| 1013 | 135 | Welcome mat |
| 1014 | 128 | iPhone |
| 1015 | 128 | iPad |
| 1016 | 136 | Redmi 3S Prime |
| 1017 | 134 | Acer |
| 1018 | 120 | Pacel |
| 1019 | 124 | Money Bank |
| 1020 | 115 | Xbox |
| 1021 | 132 | BOX 111 |
| 1022 | 136 | Redmi 4A |
| 1023 | 130 | Wifi Adapter |
| 1024 | 137 | Cable Modem |
| 1025 | 136 | Note 5 |
| 1026 | 137 | Moto Razr |
| 1027 | 137 | Moto G |
| 1028 | 128 | iPod |
+------+--------+----------------+

是什么原因造成的?

最佳答案

尝试一下从产品中选择 id、suppid、名称,其中suppid = 137 AND(名称类似“%%”或 ID 类似“%%”)

OR 运算符优先于 AND。在这种情况下,您需要隐式定义逻辑运算符的优先级。

所以你查询从产品中选择 id,suppid,name WHEREsuppid = 137 AND name LIKE '%%' OR id LIKE '%%' 读取 (WHEREsuppid = 137 AND name LIKE '%%')或 id LIKE '%%'因此 OR id LIKE '%%' 部分返回所有 id。

关于当使用类似 %% 时,MySQL 查询返回整个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45391801/

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