内部联接中的子查询 - 多部分标识符无法绑定

时间:2016-05-31 18:14:07

标签: sql sql-server

我有以下查询,我得到一个多部分标识符无法绑定异常。我意识到为什么和我的下一个想法是使用一个没有工作的交叉应用。我真正需要做的是加入子查询以确保我获得特定列的最新条目。

不幸的是,我已经没有想法......我如何完成这个查询?

SELECT t1.*
FROM dbo.Table1 t1 (nolock)
INNER JOIN 
(
    SELECT TOP 1 t2_s.c1, t2_s.c2, t2_s.c4
    FROM dbo.Table2 t2_s
    WHERE t2_s.c1 = t1.c1
    ORDER BY t2_s.dateStamped DESC
) t2 
    on t2.c1 = t1.c1
INNER JOIN dbo.Table3 t3
    on t3.c1 = t2.c2 and t3.c2 = 1
WHERE t1.c2 = 'xxx'

1 个答案:

答案 0 :(得分:1)

假设您使用的是SQL Server,那么CROSS APPLY应该做您想做的事情:

SELECT t1.*
FROM dbo.Table1 t1 (nolock) CROSS APPLY
     (SELECT TOP 1 t2_s.c1, t2_s.c2, t2_s.c4
      FROM dbo.Table2 t2_s
      WHERE t2_s.c1 = t1.c1
      ORDER BY t2_s.dateStamped DESC
     ) t2 INNER JOIN
     dbo.Table3 t3
     on t3.c1 = t2.c2 and t3.c2 = 1
WHERE t1.c2 = 'xxx';