在Postgres中,当在谓词表达式的右侧使用时是ANY和SOME的同义词。例如,这些是相同的:
ANY
SOME
column = ANY (SELECT ...) column = SOME (SELECT ...)
在此处记录:
http://www.postgresql.org/docs/9.1/static/functions-subquery.html#FUNCTIONS- SUBQUERY-ANY-SOME
我已经观察到ANY并且SOME至少受到以下SQL DBMS的支持:
我是否可以安全地假设所有这些方言(以及其他方言)都将ANY其SOME视为同义词,或者在任何/某些DBMS中两个关键字之间是否存在细微的区别?
我在SQL92定义中发现了这一点:
<quantifier> ::= <all> | <some> <all> ::= ALL <some> ::= SOME | ANY
这并没有说明ANY和的语义SOME。在文档的后面,仅<some>引用了两个关键字。我怀疑NULL至少在某些DBMS中在处理方面可能会有细微的差别。欢迎任何/一些指向明确声明的指针,无论是否可以假设。
<some>
NULL
在引用几行之后,SQL92标准还指定了的语义<some>,即:
c) If the implied <comparison predicate> is true for at least one row RT in T, then "R <comp op> <some> T" is true. d) If T is empty or if the implied <comparison predicate> is false for every row RT in T, then "R <comp op> <some> T" is false. e) If "R <comp op> <quantifier> T" is neither true nor false, then it is unknown.
这些规则适用于<some>令牌,而与它是SOME还是ANY替代方案无关,因此是的,根据标准,它们是同义词