[英]mysql - why sql query is selecting unnecessary values?
我想选择条件为真的行。 我有一个名为command
的列,并且如果该列值包含已定义的字符串(对我来说),则将其添加到结果中。
我的问题是选择行,因为查询没有看到WHERE语句,所以如果column command
包含字符串,它将选择所有数据。
SELECT *
FROM `admin_log`
WHERE `admin_log`.`user` = 'Admin'
AND command LIKE '%aznot%'
OR command LIKE '%hango%'
ORDER BY `order_id` DESC
LIMIT 0, 50
例如,我有3个管理员帐户:Admin,Zuppa和Grund。 如果命令列包含:aznot或hango,我想按帐户ADMIN选择所有数据。
我究竟做错了什么?
您需要一些括号。
SELECT *
FROM `admin_log`
WHERE `admin_log`.`user` = 'Admin'
AND (command LIKE '%aznot%' OR command LIKE '%hango%')
ORDER BY `order_id`
DESC LIMIT 0, 50
SELECT * FROM `admin_log` WHERE `admin_log`.`user` = 'Admin'
AND (command LIKE '%aznot%' OR command LIKE '%hango%')
ORDER BY `order_id` DESC LIMIT 0, 50
尝试这样的事情:
SELECT * FROM `admin_log` WHERE `admin_log`.`user` = 'Admin' AND (command LIKE '%aznot%' OR command LIKE '%hango%') ORDER BY `order_id` DESC LIMIT 0, 50
最好将OR语句分隔为单独的表达式,以防止引擎误解。
SELECT * FROM `admin_log` WHERE `admin_log`.`user` = 'Admin' AND (command LIKE '%aznot%' OR command LIKE '%hango%') ORDER BY `order_id` DESC LIMIT 0, 50
SELECT *
FROM `admin_log`
WHERE `admin_log`.`user` = 'Admin'
AND (command LIKE '%aznot%'
OR command LIKE '%hango%' )
ORDER BY `order_id` DESC
LIMIT 0, 50
您需要适当地嵌套条件。 请参阅SQL中逻辑运算符的优先级规则
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.