in和= MYSQL之间的区别

时间:2013-02-01 15:40:35

标签: mysql sql database

  

可能重复:
  MYSQL OR vs IN performance

我想知道它们之间的区别是什么:

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

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

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

3 个答案:

答案 0 :(得分:2)

它们是相同的IN()只是一个使用列出所有OR语句的简写版本。

答案 1 :(得分:1)

IN()只会使语法更短,更容易阅读,尤其是当你有很多OR条款时。

答案 2 :(得分:0)

您可以使用IN轻松完成另一件事,但不能使用=

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

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

实际使用情况:

  • 您有另一个表中的可管理用户类型列表(每个类型都有自己的权限),并且您希望强制实际存在用户类型。