如何在mysql查询中使用一个或多个OR和AND

时间:2012-06-19 18:12:38

标签: mysql database select

  

可能重复:
  MYSQL AND OR On Many To Many Table

我想做一个mysql查询,其中从数据库中检索数据并进行一些调整。

我想检查哪些条目与var1或var2或var3等相似,并且小于给定的ID。

SELECT * 
FROM database 
WHERE name = var1 
    OR name = var2 
    OR name = var3 
    AND id < 200

但上述行并不真正有效。此外,当没有更多条目(id小于200)时,它会显示一些条目。

你知道我的意思吗?查询应该选择包含我想要的名称之一且小于ID的数据...

我有一个逻辑思维问题......

3 个答案:

答案 0 :(得分:13)

precedence有逻辑运算符。如有疑问,请使用括号。

在你的情况下:

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 所述,您可以将OR语句压缩为IN,因为它们在同一个字段上运行。这样做会消除对括号的需要。

SELECT * FROM database WHERE name IN (var1,var2,var3) AND id < 200

尽管如此,了解两个原始查询之间的区别非常重要,因为您不可避免地会编写具有多个条件的查询。

答案 1 :(得分:1)

使用括号设置逻辑表达式的优先级:

SELECT * FROM database_table WHERE (name = var1 OR name = var2 OR name = var3) AND id < 200

答案 2 :(得分:0)

请阅读以下内容。

<强> Is there a difference between these two queries?

您将了解OR和AND中括号的 重要性 是什么。