在 mySQL 查询中的 OR WHERE 和 AND

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/17750098/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-31 18:13:46  来源:igfitidea点击:

OR WHERE and AND in mySQL Query

mysqlsql

提问by Curtis

Basically, I'm trying to get data from an SQL based on two different groups, t.typehas to equal singleand t.statushas to equal 1but as for t.orgI want to it get both DUALand RA, here's what I attempted to no avail.

基本上,我试图从基于两个不同组的 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'

I'm pretty sure theirs a way to get this query working, just not in my head

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

回答by eggyal

ANDhas higher precedencethan OR, so your existing expression is currently evaluated as:

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

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

To force alternative logic, one needs to include explicit parentheses:

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

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

However, in this case, one can use MySQL's IN()operator instead of OR:

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

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

回答by AeroX

You can use the IN condition:

您可以使用 IN 条件:

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

Or you can use brackets to group conditions:

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

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