SQL 子查询中的 ORDER BY 错误(使用了 TOP)
SQL error on ORDER BY in subquery (TOP is used)
我从以下查询中得到 Syntax error near 'ORDER'
:
SELECT i.ItemID, i.Description, v.VendorItemID
FROM Items i
JOIN ItemVendors v ON
v.RecordID = (
SELECT TOP 1 RecordID
FROM ItemVendors iv
WHERE
iv.VendorID = i.VendorID AND
iv.ParentRecordID = i.RecordID
ORDER BY RecordID DESC
);
如果我删除 ORDER BY
子句,查询运行正常,但不幸的是,必须从降序列表而不是升序列表中提取。我找到的所有与此相关的答案都表明必须使用 TOP
,但在这种情况下我已经在使用它了。当 TOP
和 ORDER BY
不是子查询的一部分时,我没有任何问题。有什么想法吗?
ORDER BY 中的 RecordID
不明确。在其前面添加适当的 table 别名(例如 iv.RecordID
)。
我会使用 max 而不是 top 1 ... 按
排序
SELECT i.ItemID, i.Description, v.VendorItemID
来自项目 i
加入 ItemVendors v ON
v.RecordID = (
SELECT 最大值(记录 ID)
来自 ItemVendors iv
在哪里
iv.VendorID = i.VendorID 和
iv.ParentRecordID = i.RecordID);
此错误与TOP无关。
ASE 根本不允许在子查询中使用 ORDER BY。这就是错误的原因。
我从以下查询中得到 Syntax error near 'ORDER'
:
SELECT i.ItemID, i.Description, v.VendorItemID
FROM Items i
JOIN ItemVendors v ON
v.RecordID = (
SELECT TOP 1 RecordID
FROM ItemVendors iv
WHERE
iv.VendorID = i.VendorID AND
iv.ParentRecordID = i.RecordID
ORDER BY RecordID DESC
);
如果我删除 ORDER BY
子句,查询运行正常,但不幸的是,必须从降序列表而不是升序列表中提取。我找到的所有与此相关的答案都表明必须使用 TOP
,但在这种情况下我已经在使用它了。当 TOP
和 ORDER BY
不是子查询的一部分时,我没有任何问题。有什么想法吗?
RecordID
不明确。在其前面添加适当的 table 别名(例如 iv.RecordID
)。
我会使用 max 而不是 top 1 ... 按
排序SELECT i.ItemID, i.Description, v.VendorItemID 来自项目 i 加入 ItemVendors v ON v.RecordID = ( SELECT 最大值(记录 ID) 来自 ItemVendors iv 在哪里 iv.VendorID = i.VendorID 和 iv.ParentRecordID = i.RecordID);
此错误与TOP无关。 ASE 根本不允许在子查询中使用 ORDER BY。这就是错误的原因。