如何在mysql查询中使用一个或多个OR和AND [英] How to use one or more OR and AND in mysql query

查看:805
本文介绍了如何在mysql查询中使用一个或多个OR和AND的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述


可能重复:

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆