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 ,但在这种情况下我已经在使用它了。当 TOPORDER 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。这就是错误的原因。