2016-12-24 57 views
0

我正在测试派生表查询。当我运行下面的查询时,它显示错误。无效的对象名称派生表

`Invalid object name 'result'.` 

我真的很惊讶。请问任何人请清楚我的怀疑为什么它会抛出这个奇怪的错误。

SELECT 
    * 
FROM (SELECT 
    1 AS ID, 
    'Mike' AS Name) [result] 
WHERE result.ID NOT IN (SELECT 
    ID 
FROM [result] 
WHERE Name = 'Mike') 

回答

0

您无法重复使用该语法的派生表。
使用CTE(公用表表达式)。

with [result] as 
    (SELECT 
    1 AS ID, 
    'Mike' AS Name) 

SELECT 
    * 
FROM result 
WHERE result.ID NOT IN (SELECT 
    ID 
FROM [result] 
WHERE Name = 'Mike') 
+0

如果你解释为什么我不能使用该语法重用派生表可能会更好? –

+1

这是根本不支持的语言,提供了另一种选择。 –

+0

感谢您的回答。 :) –