我有一个如下所示的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]
。但这给了我同样的错误。
答案 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
,然后尝试。
希望这有帮助。