如何在mysql查询中使用一个或多个OR和AND [英] How to use one or more OR and AND in mysql query
问题描述
可能重复:
MYSQL和OR在许多表上
我想做一个mysql查询,其中从一个数据库检索数据有一些规定。
我想检查哪些条目类似于var1或var2, var3等。小于给定的ID。
喜欢
SELECT *
FROM database
WHERE name = var1
OR name = var2
OR name = var3
AND id< 200
但上面的行并不真的有效。此外,当没有更多的条目(其ID小于200),它显示我但是一些条目。
你知道我的意思吗?查询应选择包含我想要的名称之一AND小于ID的数据...
我有一个逻辑思维问题...
有优先级与逻辑运算符。
SELECT * FROM database WHERE(name = var1 OR name = var2 OR name = var3)AND id< 200
您的原始查询被解释如下,因为 AND
有更高的优先级。
SELECT * FROM database WHERE name = var1 OR name = var2 OR(name = var3 AND id < 200)
更新
通过 Rocket 评论,您可以将或
语句缩小为 IN
,因为它们在同一字段上操作。这样做会删除对括号的需要。
SELECT * FROM数据库WHERE名称IN(var1,var2,var3) ; 200
然而,理解两个原始查询之间的区别很重要,因为您不可避免地将多个条件。
Possible Duplicate:
MYSQL AND OR On Many To Many Table
I want to do a mysql query where data is retrieved from a database with some regulation.
I want to check which entries are similar to var1 or var2 or var3 and etc. AND are smaller than a given ID.
Like
SELECT *
FROM database
WHERE name = var1
OR name = var2
OR name = var3
AND id < 200
But the above line don't really works. Also when there is no more entry (which id is smaller than 200) it shows me however some entries.
Do you know what I mean? The query should select data which contains one of my wanted names AND which are smaller than an ID...
I have there a logic thinking problem...
There is precedence with logical operators. When in doubt, use parenthesis.
In your case:
SELECT * FROM database WHERE (name = var1 OR name = var2 OR name = var3) AND id < 200
Your original query was interpreted as follows because the AND
has higher precedence.
SELECT * FROM database WHERE name = var1 OR name = var2 OR (name = var3 AND id < 200)
Update
As commented by Rocket, you could condense your OR
statements to IN
since they operate on the same field. Doing so would remove the need for parentheses.
SELECT * FROM database WHERE name IN (var1,var2,var3) AND id < 200
Nonetheless, understanding the difference between the two original queries is important as you inevitably will write queries with multiple conditions.
这篇关于如何在mysql查询中使用一个或多个OR和AND的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!