我试图从一个表中绘制结果,其中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'
我是不是漏掉了一个特殊的关键词?
如有任何帮助,我们将不胜感激。
您需要使用括号将OR子句与AND子句分隔开。这样,前三个条件之一将为真,ANDdi_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,就像乘法的优先级高于加法一样。这就是你得到错误结果集的原因。您可以在MySQL文档中阅读有关运算符优先级的信息。
如果要将OR子句与AND子句分开。您必须添加括号
SELECT *
FROM d_info
WHERE (di_status = 'PENDING'
OR di_status = 'APPROVED'
OR di_status = 'SUSPENDED')
AND di_rl_id = '9'