使用UNION查询单批发货重量最大/最小城市的SQL报错求助
解决UNION合并带ORDER BY和LIMIT查询的语法错误问题
修正后的SQL语句
( SELECT c.long_name, s.weight FROM sql.city c JOIN sql.shipment s ON c.city_id = s.city_id ORDER BY s.weight DESC LIMIT 1 ) UNION ( SELECT c.long_name, s.weight FROM sql.city c JOIN sql.shipment s ON c.city_id = s.city_id ORDER BY s.weight LIMIT 1 )
错误原因与修正说明
原语句报错是因为直接在UNION的单个查询分支后使用ORDER BY和LIMIT不符合语法规范。数据库无法识别未被包裹的排序、限制逻辑属于哪个分支,因此抛出syntax error at or near "UNION"。
把每个查询用括号包裹后,数据库会先独立执行每个子查询:分别完成排序并取出1条最大/最小重量的记录,再将两个结果集通过UNION合并,完全符合你用UNION解决问题的要求。
注意:如果存在多个城市对应相同的最大/最小重量,
LIMIT 1只会返回其中一条。若需要获取所有符合条件的记录,可后续调整逻辑,但当前写法已满足“找出单批发货重量最大和最小对应城市”的基础需求。
内容的提问来源于stack exchange,提问作者Ilya
相关产品推荐
相关产品推荐

