leetcode_176_第二高的薪水[distinct、order by(desc)、limit、ifnull]

leetcode 176 第二高的薪水

  • 題目
    編寫一個SQL查詢,獲取'Employee'表中第二高的薪水。
    +----+--------+
    | Id | Salary |
    +----+--------+
    | 1  | 100    |
    | 2  | 200    |
    | 3  | 300    |
    +----+--------+
    例如上述'Employee'表,SQL查詢應該返回'200'作爲第二高的薪水。
    如果不存在第二高的薪水,那麼查詢應返回'null'+---------------------+
    | SecondHighestSalary |
    +---------------------+
    | 200                 |
    +---------------------+
    
  • select ifnull(
        (
            select distinct Salary 
            from Employee 
            order by Salary desc
            limit 1,1
        ), 
        null
    ) as SecondHighestSalary;
    
    1. distinct 列出不同的值,用於返回唯一不同的值
      select distinct 列名 from 表名;
      
    2. order by 用於根據指定的列對結果集進行排序
      select * from 表名 order by 列名;
      
      默認排序升序,如果需要降序可加關鍵字DESC
      select * from 表名 order by 列名 desc;
      
    3. limit 指定返回某行或某幾行
      select * from 表名 limit 5;
      
      limit 5 指示mysql返回不多於5行,從第一行(行0)開始,給出爲指定的要檢索的最大行數,如果沒有足夠的行,只返回能返回的幾行。
      如果需要返回下一個3行,需執行
      select * from 表名 limit 5,3;
      
      也可使用替代語法
      select * from 表名 limit 3 offset 5;
      
    4. ifnull 判斷第一個表達式是否爲 NULL,如果爲 NULL 則返回第二個參數的值,如果不爲 NULL 則返回第一個參數的值。
      select ifnull(表達式,表達式爲null時要返回的值);
      
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章