【发布时间】:2012-02-25 09:39:04
【问题描述】:
我知道例如 MySQL 实现了嵌套查询。
如果存在这样的标准,它是标准 SQL 功能吗?
【问题讨论】:
-
您可以阅读 ANSI SQL-89 中的子查询,也可以阅读 ANSI SQL-86 中的子查询
标签: sql
我知道例如 MySQL 实现了嵌套查询。
如果存在这样的标准,它是标准 SQL 功能吗?
【问题讨论】:
标签: sql
是的,有一个 SQL 标准,最初由 ANSI 于 1986 年正式化,并于 1989、1992、1999、2003 年进行了修订。您可以点击Wikipedia page on SQL 中的链接。
这是SQL-92 standard 副本的直接链接。
子查询(嵌套查询)当然在其中。
【讨论】:
我认为“嵌套查询”指的是'derived tables'。
在 SQL:1992 的 SQL 标准中引入了对派生表的支持。在此之前,所有工作都必须在单个 SELECT..FROM 内完成。这解释了存在相当奇怪的HAVING 子句,以便在应用GROUP BY 汇总后进行进一步过滤。 [这也可能解释了为什么某些 SQL 产品似乎更适合连接而不是子查询,以及为什么对于普通 SO 用户来说所有关系运算符看起来都像连接!] 然而,对 HAVING 的支持不足以允许任意复杂的 SQL 查询,因此需要派生表。
派生表不仅使 HAVING 变得多余,而且最终使 SQL 在关系上变得完整(根据 Codd 对该术语的定义),因此它是所有现代 SQL 实现中的一个特性。
【讨论】: