gpt4 book ai didi

sql - 甲骨文: '= ANY()' 与 'IN ()'

转载 作者:行者123 更新时间:2023-12-03 01:53:07 24 4
gpt4 key购买 nike

我刚刚在 ORACLE SQL 中偶然发现了一些我很好奇的东西(不确定其他中是否也有)。我在这里作为维基提问,因为很难尝试在谷歌中搜索符号......

我刚刚发现,当根据一组值检查一个值时,您可以这样做

WHERE x = ANY (a, b, c)

与平常不同

WHERE x IN (a, b, c)

所以我很好奇,这两种语法的推理是什么?一种是标准,另一种是一些奇怪的 Oracle 语法吗?或者它们都是标准的?出于性能原因是否会优先选择其中一种,或者?

只是好奇有人能告诉我有关“= ANY”语法的信息。

最佳答案

ANY(或其同义词SOME)是EXISTS的语法糖,具有简单的关联:

SELECT  *
FROM mytable
WHERE x <= ANY
(
SELECT y
FROM othertable
)

等同于:

SELECT  *
FROM mytable m
WHERE EXISTS
(
SELECT NULL
FROM othertable o
WHERE m.x <= o.y
)

对于不可为空字段的相等条件,它变得类似于 IN

所有主要数据库,包括 SQL ServerMySQLPostgreSQL 都支持此关键字。

关于sql - 甲骨文: '= ANY()' 与 'IN ()',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2298550/

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