MYSQLの記事は2番目に高い給料を得ます

トピック:

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

+----+--------+
| Id | Salary |
+----+--------+
| 1  | 100    |
| 2  | 200    |
| 3  | 300    |
+----+--------+

例えば、上記従業員テーブル、SQLクエリは、2番目に高い給与として200を返すべきです。

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

2番目に高い給与が存在しない場合、クエリはNULLを返す必要があります。

 

問題解決のアプローチ:

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

問題解決のポイント:

1、給与、給与行く重量の大きさを比較します。

図2に示すように、小から大、逆DESCのソート順に値によってソート順序、。

3、クエリをページング、栗を与えます:

SELECT name
FROM students
ORDER BY score DESC
LIMIT 3 OFFSET 0;

LIMIT 3を発現した上記のクエリは、三を取るために、最初から0、結果セットのレコード番号オフセット0。ゼロからインデックスに注意SQLレコードセット。

あなたは、クエリの2ページにしたい場合は、我々は唯一の第三の記録照会の最初から結果セットである、最初の3つのレコードを「スキップ」する必要があり、3に設定されているOFFSET

MySQLでは、6 OFFSET LIMIT 3はまたLIMIT 6,3略記することがあります。

4、MySQLのクエリの結果が存在しない場合、返品をnull。要求の対象が2番目に高い給与が存在しない場合ので、その後のクエリはNULLを返す必要があります。だから、ここであなたはIFNULL構文を使用することができます。

IFNULL(expression, value)
IFNULL() 函数用于判断第一个表达式是否有结果集,如果没有结果集,则返回value值。

 

 

公開された85元の記事 ウォンの賞賛6 ビュー10000 +

おすすめ

転載: blog.csdn.net/weixin_42595012/article/details/104054046