在派生表上联接

时间:2018-11-08 13:59:11

标签: tsql

考虑以下查询。它具有执行特定目的的子查询。然后,此子查询的派生表将在外部应用内部的联接中使用。这样可以正常工作。

但是,如果对注释行取消注释,则会引发错误:“无效的对象名称'SubQuery'”。我觉得这很奇怪,因为在我看来他们取得了相同的结果。

这是怎么回事?为什么我不能以“正常”方式加入派生表?

DECLARE @table1 TABLE (Id int)
DECLARE @table2 TABLE (Id int, ParentId int)

INSERT INTO @table1 VALUES(1), (2), (3)
INSERT INTO @table2 VALUES(2, 1), (3, 2)

SELECT
    *
FROM (
    SELECT
        [Id]
    FROM
        @table1
) AS [SubQuery]
OUTER APPLY (
    SELECT TOP 1
        [@table2].[Id]
    FROM
        @table2
    JOIN
        @table2 AS [t] ON [@table2].[ParentId] = [SubQuery].[Id]
    --JOIN
    --  [SubQuery] ON [@table2].[ParentId] = [SubQuery].[Id]
) AS [OuterApply]

0 个答案:

没有答案
相关问题