【问题标题】:Are nested queries standard in the SQL language?嵌套查询是 SQL 语言的标准吗?
【发布时间】:2012-02-25 09:39:04
【问题描述】:

我知道例如 MySQL 实现了嵌套查询。

如果存在这样的标准,它是标准 SQL 功能吗?

【问题讨论】:

  • 您可以阅读 ANSI SQL-89 中的子查询,也可以阅读 ANSI SQL-86 中的子查询

标签: sql


【解决方案1】:

是的,有一个 SQL 标准,最初由 ANSI 于 1986 年正式化,并于 1989、1992、1999、2003 年进行了修订。您可以点击Wikipedia page on SQL 中的链接。

这是SQL-92 standard 副本的直接链接。

子查询(嵌套查询)当然在其中。

【讨论】:

    【解决方案2】:

    我认为“嵌套查询”指的是'derived tables'

    在 SQL:1992 的 SQL 标准中引入了对派生表的支持。在此之前,所有工作都必须在单个 SELECT..FROM 内完成。这解释了存在相当奇怪的HAVING 子句,以便在应用GROUP BY 汇总后进行进一步过滤。 [这也可能解释了为什么某些 SQL 产品似乎更适合连接而不是子查询,以及为什么对于普通 SO 用户来说所有关系运算符看起来都像连接!] 然而,对 HAVING 的支持不足以允许任意复杂的 SQL 查询,因此需要派生表。

    派生表不仅使 HAVING 变得多余,而且最终使 SQL 在关系上变得完整(根据 Codd 对该术语的定义),因此它是所有现代 SQL 实现中的一个特性。

    【讨论】:

    • 感谢您的回答,但我的意思是子查询 :) (顺便说一句,我已经接受了这个答案;))
    • @onedaywhen:正如最近在 SO 的另一个问题所揭示的那样,仍然存在例外情况,并且一些(我猜是新的)产品不支持各种查询。 Greenplum 不支持(但是,正如他们所说)相关的子查询 - 尽管不相关的子查询很好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-18
    • 1970-01-01
    • 2011-06-12
    • 2019-05-06
    • 1970-01-01
    相关资源
    最近更新 更多