sql - SQL ANY 和 SOME 关键字在所有 SQL 方言中都是同义词吗?

标签 sql subquery any sql-standards

在 Postgres 中,ANYSOME在谓词表达式的右侧使用时是同义词。例如,这些是相同的:

column = ANY (SELECT ...)
column = SOME (SELECT ...)

这是记录在这里:

http://www.postgresql.org/docs/9.1/static/functions-subquery.html#FUNCTIONS-SUBQUERY-ANY-SOME

我观察到 ANYSOME至少由这些 SQL DBMS 支持:
  • DB2
  • Derby
  • H2
  • HSQLDB
  • 安格尔
  • MySQL
  • 甲骨文
  • Postgres
  • SQL Server
  • Sybase ASE
  • Sybase SQL Anywhere

  • 我可以安全地假设所有这些方言(以及其他方言)都适用于 ANYSOME作为同义词还是任何/某些 DBMS 中的两个关键字之间存在细微差别?

    我在 SQL92 定义中发现了这一点:
    <quantifier> ::= <all> | <some>
    <all> ::= ALL
    <some> ::= SOME | ANY
    

    这并没有说明 ANY 的语义。和 SOME .后来在文档中,只有 <some>是引用的,不是这两个关键字。我怀疑 NULL 中可能存在细微差别处理,例如,至少在某些 DBMS 中。欢迎任何/一些指向明确声明是否可以假设的指针。

    最佳答案

    在您引用的几行之后,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> token ,独立于它是 SOME 还是 ANY 替代品,所以是的,根据标准,它们是同义词

    关于sql - SQL ANY 和 SOME 关键字在所有 SQL 方言中都是同义词吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8771596/

    相关文章:

    mySQL相关子查询

    mysql - 子查询-从不相关的表返回数据?

    python - 如何检查一个值是否匹配一个txt文件

    oracle - CREATE TABLE 和 CREATE ANY TABLE 权限的区别

    mysql - 使用子选择和分组进行排序

    mysql - 在 Union 上的 sql 中使用 ROW_NUMBER()

    sql - 在动态 ORDER BY 中将 nvarchar 转换为 int 时出错

    mysql - 如何迁移远程服务器有严格限制的大型 mysql 数据库?

    python - 检查字符串是否包含 Python 列表中的元素时出错?

    sql - Postgres 限制另一个表中 WHERE IN id 中每个字段的行数