WHERE中IN和OR之间的SQL区别

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

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

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

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

回答:

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

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

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

举个例子:

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

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

对的一个IN列出的值。

以上是 WHERE中IN和OR之间的SQL区别 的全部内容, 来源链接: utcz.com/qa/399194.html

回到顶部