【问题标题】:Invalid object name - derived table无效的对象名称 - 派生表
【发布时间】:2026-01-24 23:35:01
【问题描述】:

我正在测试派生表查询。当我在查询下运行时,它显示错误。

`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')

【问题讨论】:

    标签: sql sql-server sql-server-2008 sql-server-2008-r2


    【解决方案1】:

    您不能使用该语法重复使用派生表。
    为此使用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')
    

    【讨论】:

    • 如果你能解释一下为什么我不能使用该语法重用派生表会更好?
    • 提供另一种选择的语言根本不支持它。
    • 感谢您的回答。 :)
    最近更新 更多