2013-07-19 43 views
4

基本上,我试图从基于两种不同群体的SQL获取数据,t.type必须等于singlet.status必须等于1但作为t.org我想它同时获得DUALRA,这是我试图无效。或者和与在MySQL查询

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' 

我敢肯定,他们有办法让这个查询工作,只是没有在我的脑海

回答

14

ANDprecedenceOR高,所以现有的表达正在评估为:

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') 
+0

它工作完美,非常感谢! – Curtis

+0

该版本提供了更为简单的响应,并允许我编写较短的查询 – Curtis

+0

如果这是您问题的正确答案,请将其标记为如此。 – axiopisty

4

您可以使用条件:

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')