左连接子查询给出无效的对象名称错误

时间:2014-05-12 08:21:28

标签: sql sql-server subquery left-join

我有一个如下所示的SQL查询:

SELECT TOP 1000 FROM [Mydb].[dbo].[Table1] AS t1
LEFT JOIN (
    SELECT fk_id, Email FROM dbo.Table2 
) AS t2 ON t1.id = t2.fk_id

但这给了我错误:

Invalid object name 'dbo.Table2'.

知道为什么SQL Server无法识别子查询中的Table2吗?

PS。

我尝试将dbo.Table2重命名为[Mydb].[dbo].[Table2]。但这给了我同样的错误。

2 个答案:

答案 0 :(得分:1)

首先,您的查询形成不正确。根本不需要那个子查询。

您发布的查询

SELECT TOP 1000 FROM [Mydb].[dbo].[Table1] AS t1
LEFT JOIN (
    SELECT fk_id, Email FROM dbo.Table2 
) AS t2 ON t1.id = t2.fk_id

可以简化如下,试一试

SELECT TOP 1000 * FROM [Table1] t1
LEFT JOIN Table2 t2 ON t1.id = t2.fk_id

答案 1 :(得分:0)

不确定这是否是问题,但你在前1000后错过了星号(*)。所以也许它应该是类似下面的

SELECT TOP 1000 * FROM [Mydb].[dbo].[Table1] AS t1
LEFT JOIN (
    SELECT fk_id, Email FROM dbo.Table2 
) AS t2 ON t1.id = t2.fk_id

如果这不起作用,请从dbo移除dbo.Table2,然后尝试。

希望这有帮助。