You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

按名字排序失效:获取第N高薪资SQL排序异常技术求助

解决第N高薪资查询的排序问题

我明白你遇到的问题了——你的SQL确实能正确找出第N高薪资的所有员工,但排序没生效是因为你没在主查询的末尾加上明确的ORDER BY子句。数据库在没有指定排序规则时,会按照数据存储的物理顺序返回结果,这就是为什么你的输出没有按first_name的字母顺序排列。

修正后的SQL代码

SELECT first_name, last_name, salary 
FROM Employees E1 
WHERE (N-1) = ( 
    SELECT COUNT(DISTINCT(E2.Salary)) 
    FROM Employees E2 
    WHERE E2.Salary > E1.Salary 
)
ORDER BY first_name ASC;

关键说明

  • 原查询的核心逻辑是正确的:通过子查询统计比当前员工薪资高的不同薪资数量,来定位第N高薪资的员工(当有多人薪资相同时,会返回所有符合条件的记录)。
  • 新增的ORDER BY first_name ASC子句会在筛选出目标记录后,强制按first_name的字母升序排列结果,这样就能得到你期望的输出:

    Alberto Errazuriz 12000.00
    Nancy Greenberg 12000.00

如果你的数据库默认排序不区分大小写(比如MySQL的部分字符集),可以根据需要调整排序规则,例如:

ORDER BY first_name COLLATE utf8mb4_bin ASC;

内容的提问来源于stack exchange,提问作者john smith jr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:00:54