【问题标题】:Oracle AS keyword and subqueriesOracle AS 关键字和子查询
【发布时间】:2013-12-09 19:36:55
【问题描述】:

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

SELECT * FROM (SELECT * FROM products) AS p

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

【问题讨论】:

    标签: sql oracle rdbms rdbms-agnostic


    【解决方案1】:

    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>
    

    也确认可以工作:

    • MS Access (Jet)

    【讨论】:

    • 我知道 MySQL 需要别名,我的问题是关于 AS 关键字的用法。
    • 谢谢。来自您所指标准的链接或引用将非常有价值。
    • 这在 RDBMS 合规性方面没有任何意义
    • @MaxToro 我放了一个 PDF 文档的链接。但正如 DavidAldridge 所说,“就 RDBMS 而言,这没有任何意义”
    • @MaxToro 我知道这个问题已经有一段时间了,它解决了你的问题吗?如果是,请考虑接受它:)

    猜你喜欢
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-03
    相关资源
    最近更新 更多