SQL查询报错:关键字'ORDER'附近存在语法错误,求解决方案
SQL语法错误排查与修复
错误原因
你写的SQL中,FROM子句后的子查询没有指定别名,这是SQL的语法要求——所有作为数据源的子查询必须有一个别名,数据库才能识别这个临时结果集,这直接导致了ORDER附近的语法错误。
修正后的SQL代码
给子查询添加别名(比如temp)即可解决问题:
SELECT TOP 20 * FROM ( SELECT DISTINCT p.ItemGroupName, p.Varenummer, s.EAN, s.inventoryQuantity FROM ShopInventory s, ProductData p WHERE s.EAN = p.EAN ) AS temp ORDER BY cast(inventoryQuantity AS int) DESC
优化建议
建议使用标准的JOIN语法替代旧的逗号分隔表的写法,提升代码可读性和维护性:
SELECT TOP 20 * FROM ( SELECT DISTINCT p.ItemGroupName, p.Varenummer, s.EAN, s.inventoryQuantity FROM ShopInventory s INNER JOIN ProductData p ON s.EAN = p.EAN ) AS temp ORDER BY cast(inventoryQuantity AS int) DESC
内容的提问来源于stack exchange,提问作者Andreas Ravnholt
相关产品推荐
相关产品推荐

