我从以下查询中获得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
不属于子查询时,我不会遇到任何问题。有什么想法吗?
答案 0 :(得分:2)
RecordID
含糊不清。在其前面添加适当的表别名(例如,iv.RecordID
)。
答案 1 :(得分:2)
此错误与TOP无关。 ASE根本不允许在子查询中使用ORDER BY。这就是导致错误的原因。
答案 2 :(得分:0)
我使用max而不是top 1 ... order by
SELECT i.ItemID,i.Description,v.VendorItemID 从项目i JOIN ItemVendors v ON v.RecordID =( SELECT max(RecordID) 来自ItemVendors iv 哪里 iv.VendorID = i.VendorID AND iv.ParentRecordID = i.RecordID);