我正在尝试从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'
我错过了一个特殊的关键字吗?
非常感谢任何帮助。
答案 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'