-4

可能重复:
MYSQL OR vs IN 性能

我想知道有什么区别:

SELECT * FROM table WHERE cat = 'cat1' OR cat = 'cat2' OR cat = 'cat3'

和:

SELECT * FROM table WHERE cat in ('cat1', 'cat2', 'cat3')

有什么区别吗?当我尝试时,他们都给出了相同的结果。

4

3 回答 3

2

它们是相同的,只是使用列出所有语句IN()的速记版本。OR

于 2013-02-01T15:41:27.367 回答
1

IN()只是使语法更短,更容易阅读,尤其是当您有很多OR子句时。

于 2013-02-01T15:41:28.170 回答
0

还有一件事你可以很容易地做到,IN但你不能用=.

SELECT * 
FROM `table`
WHERE `column` IN (
    SELECT col_name
    FROM `table2` -- or the same table
    WHERE `some_column` = 5
)

所以基本上你搜索另一个表的子集,这有时会派上用场。

现实生活中的使用:

  • 您在另一个表中有一个可管理用户类型的列表(每个都有自己的权限),并且您希望强制用户类型实际存在。
于 2013-02-01T15:44:09.787 回答