mysql:取group by第一条数据

该博客介绍了如何在MySQL中,针对group by操作获取每个分组的第一条数据。通过提供一个名为enterprise_info的示例表格,展示了在存在多个name(如讯腾、度百、里阿)和不相关id与update_time的情况下,如何创建新表并查询插入每个name的最新记录。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

mysql:取group by第一条数据

示例数据(表enterprise_info)

SELECT * FROM enterprise_info;
idnamegdpupdate_time
1讯腾2402018/3/31 2:49
2度百1202018/3/24 2:50
3里阿3402018/3/25 0:00
4里阿4602018/3/28 0:00
5里阿5302018/2/25 0:00
6里阿4502018/1/25 0:00
7讯腾3202018/1/12 0:00
8讯腾4352018/3/24 0:00
9讯腾5642018/2/15 0:00
10度百4352018/3/31 0:00
11度百6752018/2/22 0:00
12度百2322018/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;
idnamegdpupdate_time
1讯腾2402018/3/31 2:49
2里阿4602018/3/28 0:00
3度百4352018/3/31 0:00
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值