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
和数据可能有所不同NULL
,NULL
a的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