Joh*_*ner 1 mysql database select
可能重复:
MYSQL和OR在多对多表上
我想做一个mysql查询,其中从数据库中检索数据并带有一些规则.
我想检查哪些条目类似于var1或var2或var3等,并且小于给定的ID.
喜欢
SELECT *
FROM database
WHERE name = var1
OR name = var2
OR name = var3
AND id < 200
Run Code Online (Sandbox Code Playgroud)
但上述行并不真正有效.此外,当没有更多条目(id小于200)时,它会显示一些条目.
你懂我的意思吗?查询应该选择包含我想要的名称之一且小于ID的数据...
我有一个逻辑思维问题......
Jas*_*ary 13
有优先使用逻辑运算符.如有疑问,请使用括号.
在你的情况下:
SELECT * FROM database WHERE (name = var1 OR name = var2 OR name = var3) AND id < 200
Run Code Online (Sandbox Code Playgroud)
您的原始查询解释如下,因为它AND具有更高的优先级.
SELECT * FROM database WHERE name = var1 OR name = var2 OR (name = var3 AND id < 200)
Run Code Online (Sandbox Code Playgroud)
正如Rocket评论的那样,您可以压缩OR语句,IN因为它们在同一个字段上运行.这样做将消除括号的需要.
SELECT * FROM database WHERE name IN (var1,var2,var3) AND id < 200
Run Code Online (Sandbox Code Playgroud)
尽管如此,理解两个原始查询之间的差异很重要,因为您不可避免地会编写具有多个条件的查询.