首页 > 解决方案 > 为包含子查询的连接起别名的正确语法是什么?

问题描述

我正在尝试为具有子查询的 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

解决方案


问题是这行代码:

 AS wi AS MProd

这不是有效的语法。它可以是AS wior 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 ...

推荐阅读