【发布时间】:2016-03-05 23:55:46
【问题描述】:
我创建了以下查询:
SELECT vw.PackID AS NewData
FROM
(
SELECT mt.PackID
FROM EntityTable entities
INNER JOIN
(
SELECT TOP 1 * FROM MasterTable mt
WHERE [Id] IN
(
SELECT TOP 1 [chartID] FROM ChartTable
Where [Code] IN
(
SELECT TOP 1 [Account] FROM ItemsTable it
Where [EntityID] IN
(
Select Distinct EntityID From EntityTable Where EntityID=@EntityID
)
)
)
) mtbvw
ON mt.Id = mtbvw.Id
) vw
我是一名 C# 开发人员,几乎没有接触过 SQL,因此可能有更好的方法来实现这一点(使用内部联接?)但我收到以下错误:
无法绑定多部分标识符“mt.Id”。
无法绑定多部分标识符“mcoa.1”。
谁能帮助我解释为什么我会收到这些错误? 谢谢! :)
关于这是做什么的一些信息:
EntityID 被传递到存储过程中。然后根据传入的 EntityID 从 ItemsTable 中获取帐户。然后将帐户传递给 ChartTable,它会返回第一个 ChartID(该帐户的所有 ChartID 都相同,因此取顶部的无关紧要)并同样传递这个ChartID 回到 MasterTable 并取出主 ID。谢谢:)
【问题讨论】:
-
当您说 vw.1 时,您要求的是名为“1”的列,该列显然不存在。按照编码,很难弄清楚这是要做什么。您在这里有许多前 1 个查询,但没有排序依据。没有 order by 你不知道会返回哪一行。
-
这是 mysql 或 sqlserver 还是两者兼而有之?它们不是一回事。
-
@SeanLange 这是 sql server,对不起
-
@SeanLange 该帐户是根据传入的 EntityID 从 ItemsTable 中获取的。然后将帐户传递给 ChartTable,它会返回第一个 ChartID(该帐户的所有 ChartID 都是相同的,因此占据顶部一个无关紧要)同样将其传递回 MasterTable 并取出 ID。谢谢:)
-
该错误是因为您无法从外部引用子查询内的表。外部查询不能“看到”子查询。
标签: sql sql-server select inner-join