以下两个命令有什么区别?
SELECT * FROM table WHERE id IN (id1, id2, ..., idn)
Run Code Online (Sandbox Code Playgroud)
和
SELECT * FROM table WHERE id = id1 OR id = id2 OR ... OR id = idn
Run Code Online (Sandbox Code Playgroud)
哪一个更快?如果id是另一种类型,它会有所不同吗?
JNK*_*JNK 12
它们在语义上是相同的.
IN只是在第二个例子中的一串相等语句的简写.表现也应该是相同的.
类型无关紧要,它总是会评估为一系列的等式.
使用时NOT IN可能会有不同之处NULL,但是数据可能是这样 - NULL对于NOT IN比较,a 不会评估为false ,因此您可能会得到结果集中没有预期的行.
举个例子:
SELECT 'Passed!' WHERE NULL NOT IN ('foo', 'bar')
上面的查询将不会返回一行,即使在面值NULL既不'foo'或者'bar'-这是因为NULL是一个未知的状态,和SQL不能肯定地说,未知值是不是对的一个IN列出的值.