【发布时间】:2017-06-28 23:18:31
【问题描述】:
试图选择外部连接表的顶部记录
如果表 B 中没有记录,则为 null
如果有多个记录,则只应选择第一个。
我建立了这个查询,但我得到了错误
SELECT DISTINCT
A.Col1 , A.Col2, B.Col2, B.Col3
FROM
A LEFT OUTER JOIN (SELECT TOP 1 * FROM B WHERE B.Col1=A.Col1) A ON B.Col1=A.Col1
无法绑定多部分标识符“B.Col1”。
有人知道如何解决这个问题吗?
【问题讨论】:
-
您可能想改用
OUTER APPLY。 -
无法绑定的“B.Col1”指的是最后一部分“B.Col1=A.Col1”,因为B是子查询中表的别名(您也将其别名为A ) 所以在子查询之外是不可见的。您还可以在子查询中引用 A.Col1 ,这也无法解析。子查询语法更难阅读和维护。一般来说,使用 CTE 语法。
标签: sql sql-server join left-join outer-join