MySQL中的多个OR子句

26

我想获取id等于3或9或100等的内容...请注意,我可能会有几百个这样的id。

怎样编写查询语句最有效?

$sql = "SELECT name FROM artists WHERE (id=3 OR id=9 OR .... id-100)"
7个回答

48
  ....
WHERE id IN (3, 9, 100, ...)

1
在某个时候,将ID插入到临时表中并进行连接可能会更容易。但当然,这需要测试以找出创建表的开销值得多少ID。 - Marc B
1
用子查询代替临时表怎么样?... WHERE id IN (SELECT id FROM ...) - CodeManX

11

你可能想使用IN()函数:

... WHERE id IN (3, 9, 100);

IN() 函数语法:

expr IN (value,...)

检查一个值是否在一组值中

如果 expr 等于 IN 列表中的任何一个值,则返回 1,否则返回 0


6
SELECT * FROM table WHERE id IN (1, 2, 3 etc)

只调用你需要的列,而不是使用*

6

您可以使用SQL中的IN条件。

SELECT * FROM table WHERE ID IN ('1', '2', '3', '4');

2
SELECT * FROM table WHERE id IN (1,2,5)

1
SELECT * FROM table WHERE id IN (1,2,5);

-2

$sql = "SELECT name FROM artists WHERE id REGEXP 正则表达式模式"


1
-1... 如果存在索引,则效率低下,并假定正则表达式模式可以更有效(例如范围),但这并不是一定的(即在帖子中没有提到)。 - TomTom

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接