MySQL SELECT查询条件不符合预期 - 什么是正确的格式?

时间:2014-02-27 20:04:09

标签: mysql

我正在尝试从di_rl_id = 9的表中绘制结果,并且以下任何一项也是如此:

di_status = 'APPROVED'di_status = 'PENDING'di_status = 'SUSPENDED'

我的查询如下,但是它与我正在寻找的条件不匹配,因为它返回的行没有满足我想到的条件,例如:其中di_rl_id != 9

SELECT * 
FROM d_info
WHERE di_status =  'PENDING'
OR di_status =  'APPROVED'
OR di_status =  'SUSPENDED'
AND di_rl_id =  '9' 

我错过了一个特殊的关键字吗?

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:4)

您需要使用括号将OR子句与AND子句分开。这样,前三个条件中的一个将成立,并且di_rl_id='9'将始终为真。

SELECT * 
FROM d_info
WHERE (di_status =  'PENDING'
OR di_status =  'APPROVED'
OR di_status =  'SUSPENDED')
AND di_rl_id =  '9' 

AND运算符的优先级高于OR,就像乘法的优先级高于加法一样。这就是为什么你得到错误的结果集。您可以阅读有关运算符优先级on the MySQL docs.

的内容

答案 1 :(得分:0)

如果要将OR子句与AND子句分开。您必须添加括号

SELECT * 
FROM d_info
WHERE (di_status =  'PENDING'
OR di_status =  'APPROVED'
OR di_status =  'SUSPENDED')
AND di_rl_id =  '9'