作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
以下两个命令有什么区别?
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
在NOT IN
比较中不会得出false,因此您可能会得到结果集中未曾期望的行。
举个例子:SELECT 'Passed!' WHERE NULL NOT IN ('foo', 'bar')
即使表面值NULL
既不是'foo'
也不是'bar'
,上面的查询也不会返回行-这是因为NULL
是未知状态,并且SQL无法确定地说未知值是不是列出的IN
值之一。
关于WHERE中IN和OR之间的SQL区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9024594/
我是一名优秀的程序员,十分优秀!