Oracle AS关键字和子查询

3

刚刚发现,Oracle不喜欢使用AS关键字给子查询取别名:

SELECT * FROM (SELECT * FROM products) AS p

我需要尽可能保持我的SQL查询具有可移植性。上述查询中删除AS关键字是否会影响其他关系型数据库管理系统(RDBMS)?

1个回答

4

SQL 99 ANSI的模式是表可以有一个别名WITHOUTAS关键字,因此,您可以省略AS并在每个RDBMS上运行。请参见fiddle:

ISO/IEC 9075-2:1999,第232页,第7.6节“<table reference>”中:

<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>

还确认可以使用:

  • MS Access(Jet)

我知道MySQL需要使用别名,我的问题是关于AS关键字的用法。 - Max Toro
谢谢。提供你所参考的标准的链接或引用将非常有价值。 - Max Toro
这并不意味着在关系型数据库管理系统的合规性方面有任何意义。 - David Aldridge
@MaxToro,我放了一个PDF文档的链接。但正如DavidAldridge所说,“在关系型数据库管理系统方面,它并没有任何意义”。 - Jorge Campos
@MaxToro 我知道这个问题已经过去了一段时间,它解决了你的问题吗?如果是,请考虑接受它 :) - Jorge Campos

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接