我刚刚在 ORACLE SQL 中偶然发现了一些我很好奇的东西(不确定其他中是否也有)。我在这里作为维基询问,因为很难尝试在谷歌中搜索符号......
我刚刚发现,当根据一组值检查一个值时,您可以执行以下操作
WHERE x = ANY (a, b, c)
与通常的情况相反
WHERE x IN (a, b, c)
所以我很好奇,这两种语法的推理是什么?是一个standard还有一些奇怪的 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 Server
, MySQL
and PostgreSQL
,支持该关键字。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)