加入 select(而不是实际 table)的结果是否有效 ANSI 标准 SQL?
Is joining to the result of a select (rather than an actual table) valid ANSI standard SQL?
Microsoft SQL 服务器允许这样做(使用 Pubs 数据库)。
select
titles.title_id, title, TotalSales
from
titles
join
(select title_id, sum(qty) as TotalSales
from sales
group by title_id) as ts on ts.title_id = titles.title_id
连接是 select 的结果而不是命名的 table 或视图。
这是有效的 ANSI 标准语法吗?
如果它不是标准的,是否有其他支持它的知名数据库?
是的,这是标准的 ANSI SQL,它被称为 派生的 table 并且是大多数 SQL 方言的基石.
在 SQL 中,将查询结果本身视为 table 并在任何“父”查询中引用它(使用适当的别名)是完全有效的。
几乎所有的 RDBMS 平台都支持它。
我这么说几乎是为了警告,但我实际上想不出任何当前支持的平台不允许派生 table。
Microsoft SQL 服务器允许这样做(使用 Pubs 数据库)。
select
titles.title_id, title, TotalSales
from
titles
join
(select title_id, sum(qty) as TotalSales
from sales
group by title_id) as ts on ts.title_id = titles.title_id
连接是 select 的结果而不是命名的 table 或视图。
这是有效的 ANSI 标准语法吗?
如果它不是标准的,是否有其他支持它的知名数据库?
是的,这是标准的 ANSI SQL,它被称为 派生的 table 并且是大多数 SQL 方言的基石.
在 SQL 中,将查询结果本身视为 table 并在任何“父”查询中引用它(使用适当的别名)是完全有效的。
几乎所有的 RDBMS 平台都支持它。
我这么说几乎是为了警告,但我实际上想不出任何当前支持的平台不允许派生 table。