大数据第30天-Mysql练习题2-杨大伟

需求二:编写一个 SQL 查询,获取 Employee 表中第二高的薪水(Salary)。如果不存在第二高的薪水,那么查询应返回 null。

展示效果:

SecondHighestSalary
200

建表语句:

1 Create table If Not Exists Employee (Id int, Salary int);
2 
3 insert into Employee (Id, Salary) values (1, 100);
4 insert into Employee (Id, Salary) values (2, 200);
5 insert into Employee (Id, Salary) values (3, 300);

最终SQL:

 1 方法一:
 2 select (
 3          select 
 4                DISTINCT Salary
 5          from  
 6                Employee
 7          order by
 8                Salary DESC
 9          limit 1,1
10       )  as SecondHighestSalary;
11 方法二:
12 select 
13        max(Salary) as SecondHighestSalary 
14 from 
15        Employee
16 where 
17        Salary < (select
18                        max(Salary) 
19                  from 
20                        Employee
21                 );

提示:LIMIT 子句可以被用于强制 SELECT 语句返回指定的记录数。LIMIT 接受一个或两个数字参数。参数必须是一个整数常量。如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目。