2013-12-09 26 views
3

刚刚发现,当您使用AS关键字别名子查询Oracle不喜欢它:甲骨文AS关键字和子查询

SELECT * FROM (SELECT * FROM products) AS p 

我需要让我的SQL查询,尽可能实现可移植性。在上述查询中删除AS关键字是否会影响任何其他RDBMS?

回答

4

为SQL 99 ANSI模式是表可以有一个别名WITHOUTAS关键字的话,你可以拿出AS,它应该在每一个RDBMS工作。看到它在小提琴:

ISO/IEC 9075-2:1999,部分7.6 <表参考>,PA GE 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> 

也确认工作:

  • 的MS Access(Jet)中
+0

我知道的MySQL需要一个别名,我的问题是关于实际使用情况的' AS'关键字。 –

+0

@MaxToro我已经更新了我的答案。 –

+0

谢谢。来自您所指标准的链接或报价将非常有价值。 –