leetcode-176。第二の高給与

  • トピック
    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')

2番目に高い給与(給与)のEmployeeテーブルを取得するために、SQLクエリを記述します。

± - ±------- +
| ID |給与|
± - ±+ -------
| 1 | 100 |。
| 2 | 200 |
| 3 | 300 |。
± - ±----- - +
Employeeテーブル上記の例では、SQLクエリが第二の高給与として200を返すべきです。2番目に高い給与が存在しない場合、クエリはNULLを返す必要があります。

±-------------------- +
| SecondHighestSalary |
±-------------------- +
| 200 |
±-------------------- +

出典:滞在ボタン(LeetCode)
リンク:176 2番目に高い給与

  • 分析

まず、最終結果によると、SecondHighestSalaryがあったテーブルに設立され、このフィールドを持っていないので、我々は、クエリの結果で終了しますなのでエイリアス(SecondHighestSalary)を指定します。
前記の第二のトピックは、給料の高い、その後、使用していますORDER BYその後、並べ替えることができます,,限定制限クエリ結果の数がに戻ります。

  • コード
select distinct Salary as SecondHighestSalary from Employee order by Salary desc limit 1,1 ;

初めは行うには、上記のコードに従っているが、それがためである問題がある「なし第二の高給与は、」状況はNULLを返しません。
コメントエリアコードleetcode兄貴再び参照見直し、内部クエリはNULLを返します外側のクエリによって記録されていない]を選択した後、我々は、それを選択し、ネストされた後に発見されました。
具体的なコードは次のよう:

select(
    select distinct Salary from Employee order by Salary desc limit 1,1
)as SecondHighestSalary;

加えて、制限次のように使用です。

select * from tableName limit i,n
# i:为查询结果的索引值(默认从0开始),当i=0时可省略i
# n:为查询结果返回的数量
# i与n之间使用英文逗号","隔开
# limit n 等同于 limit 0,n

ここに画像を挿入説明
2019年12月8日

公開された52元の記事 ウォン称賛59 ビュー6841

おすすめ

転載: blog.csdn.net/ataraxy_/article/details/103445055