在语句的WHERE部分中使用OR过滤SQL结果时的最佳做法

时间:2012-05-24 15:54:04

标签: mysql sql

我一直在使用mySQL但是,这是我第一次必须执行如下查询。它有效,但我想知道是否有更好的方法来编写它。

SELECT * FROM foo WHERE bar = 10058 or bar = 90234  or bar = 98211 or bar 4002 or bar = 90023

使用此方法可以提取的行数是否有限制?我弄错了吗?有更好的方法吗?

在这个特殊案例栏中的FYI将始终是唯一的

4 个答案:

答案 0 :(得分:5)

使用IN,如下所示:

SELECT * FROM foo WHERE bar IN (10058,90234,98211,4002,90023)

答案 1 :(得分:2)

您可以将WHERE子句压缩为:

SELECT * FROM foo WHERE bar in (10058,90234,98211,4002,90023)

答案 2 :(得分:1)

您想使用IN

SELECT *
FROM `foo`
WHERE `bar` IN (10048, 90234, 98211, 4002, 90023)

答案 3 :(得分:0)

你想要一个IN子句,如

SELECT * FROM foo WHERE bar in (10058,90234,98211,4002,90023)

无论如何,你的数据库引擎会在运行时将其扩展为OR堆栈;即喜欢

WHERE bar = 10058 or bar = 90234  or bar = 98211 or bar 4002 or bar = 90023