14

基本上,我试图从基于两个不同组的 SQL 中获取数据,t.type必须相等singlet.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'

我很确定他们是让这个查询工作的方法,只是不在我的脑海里

4

2 回答 2

38

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')
于 2013-07-19T15:40:01.693 回答
6

您可以使用 IN 条件:

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

或者您可以使用括号对条件进行分组:

WHERE
    t.type = 'single' AND t.status = '1' AND (t.org = 'RA' OR t.org = 'DUAL')
于 2013-07-19T15:41:34.323 回答