gpt4 book ai didi

WHERE中IN和OR之间的SQL区别

转载 作者:行者123 更新时间:2023-12-04 06:44:32 32 4
gpt4 key购买 nike

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

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时,会有区别-NULLNOT 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/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com