力ボタンmysql練習問題02(簡単)

4010 ワード

力ボタンmysql練習問題02(簡単)
2番目の最大数を検索しnullを返さなかった
## sql:
Create table If Not Exists Employee (Id int, Salary int)
Truncate table Employee
insert into Employee (Id, Salary) values ('1', '100')
insert into Employee (Id, Salary) values ('2', '200')
insert into Employee (Id, Salary) values ('3', '300')

タイトル:
SQLクエリーを作成し、Employeeテーブルの2番目に高い給料(Salary)を取得します.
±—±-------+ | Id | Salary | ±—±-------+ | 1 | 100 | | 2 | 200 | | 3 | 300 | ±—±-------+
たとえば、上記のEmployee表では、SQLクエリは、2番目に高い給料として200を返す必要があります.2番目に高い給料が存在しない場合は、クエリはnullを返します.
±--------------------+ | SecondHighestSalary | ±--------------------+ | 200 | ±--------------------+
答え1:
select max(Salary) as SecondHighestSalary from Employee where Salary !=(select max(Salary) from Employee);

このスレ主さんによると、これは最大数ではない最大数を探すためで、面白いと思いますが、これは最良解ではありません.ただ、分かりやすいと思います.
答え2:
select
(select distinct salary from employee 
order by salary desc limit 1,1) 
as SecondHighestSalary

limitを利用してこの方法を制限してN番目の高い給料を求めることに適用することができて、しかもデータが複雑であればあるほど、速度の優位性は明らかで、これは比較的に柔軟で、第任意の位置のデータを調べることができて、私はやはりこれが使いやすいと思います