【问题标题】:What is the proper syntax to alias a join that contains a subquery?为包含子查询的连接起别名的正确语法是什么?
【发布时间】:2019-08-28 00:44:42
【问题描述】:

我正在尝试为具有子查询的 JOIN 设置别名。

RIGHT OUTER JOIN
    (
     SELECT   FieldA, FieldB
     FROM Table1
     JOIN Table2
     ON Table1.WellId = Table2.WellId
    ) AS wi
        AS MProd

ON Units.RS_Unit_Name = RTRIM(wi.RS_POOL) + '-' + wi.RS_Field

'AS' 附近的语法不正确...

wi 是别名 FieldA & FieldB;如何为 RIGHT OUTER JOIN 设置别名?

我原来的代码是:

RIGHT OUTER JOIN TABLE1
        AS MProd

ON Units.RS_Unit_Name = RTRIM(wi.RS_POOL) + '-' + wi.RS_Field

效果很好。我用我在代码示例中所做的子查询替换了 TABLE1。我似乎无法弄清楚将 MProd 设置为别名的正确语法。

【问题讨论】:

    标签: tsql


    【解决方案1】:

    问题出在这行代码:

     AS wi AS MProd
    

    这是无效的语法。它可以是AS wi 或AS MProd,但不是 AS wi AS MProd。

    这是有效的:

    RIGHT OUTER JOIN 
    ( 
      SELECT FieldA, FieldB 
      FROM   Table1 
      JOIN   Table2 ON Table1.WellId = Table2.WellId 
    ) AS MProd
    ON Units.RS_Unit_Name = RTRIM(MProd.RS_POOL) + '-' + MProd.RS_Field ...
    

    也是这样:

    RIGHT OUTER JOIN 
    ( 
      SELECT FieldA, FieldB 
      FROM   Table1 
      JOIN   Table2 ON Table1.WellId = Table2.WellId 
    ) AS wi
    ON Units.RS_Unit_Name = RTRIM(wi.RS_POOL) + '-' + wi.RS_Field ...
    

    【讨论】:

    • 感谢您的及时回复。也许我没有正确地问这个问题,或者我只是感到困惑....在您提供的代码(第一个示例)中,MProd 是在 (...) 中定义的子查询的别名,因此仅包含 FieldA &场 B.我看不到 MProd.RS_Field 将如何存在于该范围内。我 MProd,以及 RIGHT OUTER JOIN 的别名和其中包含的字段(未显示)。谢谢
    • 经过进一步审查...我是个白痴...盯着看不存在的东西,无论如何@Alan,谢谢,那行得通。
    • 没问题,很高兴为您提供帮助。当我工作时间过长时,看到不存在的东西对我来说很常见;)
    猜你喜欢
    • 2012-07-13
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 2015-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-25
    相关资源
    最近更新 更多