在Postgres中,ANY
和SOME
在谓词表达式的右侧使用时是同义词。例如,这些是相同的:
column = ANY (SELECT ...)
column = SOME (SELECT ...)
这里记录在案:
http://www.postgresql.org/docs/9.1/static/functions-subquery.html#FUNCTIONS-SUBQUERY-ANY-SOME
我发现至少有这些SQL DBMS支持ANY
和SOME
:
我可以安全地假设所有这些方言(以及其他方言)都将ANY
和SOME
视为同义词,或者在任何/某些DBMS中两个关键字之间是否存在细微差别?
我在SQL92定义中找到了这个:
<quantifier> ::= <all> | <some>
<all> ::= ALL
<some> ::= SOME | ANY
这并没有说明ANY
和SOME
的语义。稍后在文档中,仅引用<some>
,而不是两个关键字。我怀疑在NULL
处理中可能存在细微差别,例如,至少在某些DBMS中。任何/一些指向明确声明的指针是否可以被假定是值得欢迎的。
答案 0 :(得分:5)
在您引用的内容之后,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替代无关,所以是的,它们是符合标准的同义词