トピック:
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值。