小编典典

WHERE中IN和OR之间的SQL区别

sql

以下两个命令有什么区别?

SELECT * FROM table WHERE id IN (id1, id2, ..., idn)

SELECT * FROM table WHERE id = id1 OR id = id2 OR ... OR id = idn

哪一个更快?如果id是另一种类型,会有所不同吗?


阅读 45

收藏
2021-04-07

共1个答案

小编典典

它们在语义上是相同的。

IN只是第二个示例中一串相等语句的简写形式。性能也应该相同。

类型无关紧要,它将始终计算为一串相等的字符串。

但是,使用NOT IN和数据可能有所不同NULLNULLa的NOT IN比较结果不会为false ,因此您可能会得到结果集中未曾期望的行。

举个例子:

SELECT 'Passed!' WHERE NULL NOT IN ('foo', 'bar')

上面的查询将不会返回一行,即使在面值NULL既不'foo'或者'bar'-这是因为NULL是一个未知的状态,和SQL不能肯定地说,未知值是
不是 对的一个IN列出的值。

2021-04-07