📜  sql select second max - SQL (1)

📅  最后修改于: 2023-12-03 15:35:04.729000             🧑  作者: Mango

SQL Select Second Max

在SQL中,有时候需要查询第二大的值,比如在一个员工薪资表中找出第二高的薪资。

以下是两种方法实现这个需求。

方法一

使用ORDER BYLIMIT子句,将结果集按降序排列,再搜索第二行。

SELECT salary
FROM employee
ORDER BY salary DESC
LIMIT 1 OFFSET 1;

解释:

  • ORDER BY salary DESC按员工薪资的降序排列
  • LIMIT 1 OFFSET 1限制结果集只有一行,偏移量为1,即跳过第一行,返回第二行
方法二

使用子查询,先找出表中最大的薪资,再找出所有小于最大薪资的薪资,按降序排列,再找出第一行。

SELECT MAX(salary)
FROM employee
WHERE salary < (SELECT MAX(salary) FROM employee);

解释:

  • (SELECT MAX(salary) FROM employee)为子查询,返回表中最大的薪资
  • WHERE salary < (SELECT MAX(salary) FROM employee)筛选出所有薪资小于最大薪资的行
  • ORDER BY salary DESC LIMIT 1按降序排列并返回第一行

以上是SQL Select Second Max的两种常见方法,可根据实际数据和查询需求选择适当的方法。