【发布时间】:2013-12-09 19:36:55
【问题描述】:
刚发现Oracle不喜欢用AS关键字给子查询起别名:
SELECT * FROM (SELECT * FROM products) AS p
我需要让我的 SQL 查询尽可能地可移植。在上述查询中删除 AS 关键字会影响任何其他 RDBMS 吗?
【问题讨论】:
标签: sql oracle rdbms rdbms-agnostic
刚发现Oracle不喜欢用AS关键字给子查询起别名:
SELECT * FROM (SELECT * FROM products) AS p
我需要让我的 SQL 查询尽可能地可移植。在上述查询中删除 AS 关键字会影响任何其他 RDBMS 吗?
【问题讨论】:
标签: sql oracle rdbms rdbms-agnostic
SQL 99 ANSI 的模式是该表可以有一个别名WITHOUT AS 关键字,因此,您可以取出AS,它应该适用于每个 RDBMS。在小提琴上看到它:
在ISO/IEC 9075-2:1999,第 7.6 节 也确认可以工作: 【讨论】:,第 232 页:
<table reference> ::=
<table primary>
| <joined table>
<table primary> ::=
<table or query name> [ [ AS ] <correlation name>
[ <left paren> <derived column list> <right paren> ] ]
| <derived table> [ AS ] <correlation name>
[ <left paren> <derived column list> <right paren> ]
| <lateral derived table> [ AS ] <correlation name>
[ <left paren> <derived column list> <right paren> ]
| <collection derived table> [ AS ] <correlation name>
[ <left paren> <derived column list> <right paren> ]
| <only spec>
[ [ AS ] <correlation name>
[ <left paren> <derived column list> <right paren> ] ]
| <left paren> <joined table> <right paren>
AS 关键字的用法。