ICP备案+网站制作+网站托管一年只需3000元

网站建设、行业建站案例

SQL语句技巧学习系列之查询工资排名第二的员工工资

需注:编写SQL查询出员工表中排名第二的工资(使用MYSQL数据库)。

+——+ ——– +

| ID |工资|

+——+ ——– +

| 1 | 100 |

| 2 | 200 |

| 3 | 300 |

+——+ ——– +

网络配图

例如,给定上面的员工表,按要求查询应该返回200作为第二高工资,如果没有第二高的工资,那么查询应该返回null。

——————— + +

| 第二高工资 |

——————— + +

200 | |

——————— + +

解决方法一:

方法:使用子查询和限制子句;

算法:将表中的工资按降序排序,然后利用限制条件第二高工资。

SELECT DISTINCT

Salary AS SecondHighestSalary

FROM

Employee

ORDER BY Salary DESC

LIMIT 1 OFFSET 1

然而,如果没有第二高工资,这个解决方法将认为是“错误的方法”,因为表中可能只有一条记录,为了解决这个问题,我们可以把它作为临时表,修改后的正确语句如下。

SELECT

(SELECT DISTINCT

Salary

FROM

Employee

ORDER BY Salary DESC

LIMIT 1 OFFSET 1) AS SecondHighestSalary

;

解决方法二:这个方法使用数据库的ifnull功能解决“空”的问题,SQL语句如下。

SELECT

IFNULL(

(SELECT DISTINCT Salary

FROM Employee

ORDER BY Salary DESC

LIMIT 1 OFFSET 1),

NULL) AS SecondHighestSalary

相关推荐

评论 抢沙发