一尘不染

OR WHERE和AND在MySQL查询中

sql

基本上,我试图从基于两个不同组的SQL中获取数据,t.type必须相等single并且t.status必须相等,1但是至于t.org我想要同时获得DUALRA,这是我尝试的无济于事。

SELECT 
    COUNT( p.tID ) 
FROM 
    ticket AS t 
INNER JOIN 
    people AS p ON t.ID = p.tID 
WHERE 
    t.type = 'single' AND t.status='1' AND t.org = 'RA' OR t.org = 'DUAL'

我很确定他们的方法可以使此查询正常工作,只是不在我脑海


阅读 190

收藏
2021-03-10

共1个答案

一尘不染

AND具有比更高的优先级OR,因此您现有的表达式当前被评估为:

WHERE 
    (t.type = 'single' AND t.status='1' AND t.org = 'RA') OR t.org = 'DUAL'

要强制使用替代逻辑,需要包括显式括号:

WHERE 
    t.type = 'single' AND t.status='1' AND (t.org = 'RA' OR t.org = 'DUAL')

但是,在这种情况下,可以使用MySQL的IN()运算符代替OR

WHERE 
    t.type = 'single' AND t.status='1' AND t.org IN ('RA','DUAL')
2021-03-10