mysql:取group by第一條數據

mysql:取group by第一條數據

示例數據(表enterprise_info)

SELECT * FROM enterprise_info;
id name gdp update_time
1 訊騰 240 2018/3/31 2:49
2 度百 120 2018/3/24 2:50
3 裏阿 340 2018/3/25 0:00
4 裏阿 460 2018/3/28 0:00
5 裏阿 530 2018/2/25 0:00
6 裏阿 450 2018/1/25 0:00
7 訊騰 320 2018/1/12 0:00
8 訊騰 435 2018/3/24 0:00
9 訊騰 564 2018/2/15 0:00
10 度百 435 2018/3/31 0:00
11 度百 675 2018/2/22 0:00
12 度百 232 2018/3/30 0:00

數據說明:
- 共有三個name:訊騰、度百、裏阿
- id與update_time不是正相關的關係

目標

獲取三個name的最新數據,並插入到新表(n_enterprise_info)中

步驟一:創建新表

CREATE TABLE n_enterprise_info LIKE enterprise_info;

步驟二:查詢並插入結果

INSERT INTO n_enterprise_info(name, gdp, update_time)  
    SELECT en.name, en.gdp, en.update_time FROM enterprise_info en 
    JOIN (
        SELECT name, max(update_time) up_time 
        FROM enterprise_info 
        GROUP BY name ORDER BY update_time DESC 
        ) tmp 
    ON en.name = tmp.name AND en.update_time = tmp.up_time;

結果示例

SELECT * FROM n_enterprise_info;
id name gdp update_time
1 訊騰 240 2018/3/31 2:49
2 裏阿 460 2018/3/28 0:00
3 度百 435 2018/3/31 0:00
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章