MySQL分组取最新

源数据

日期 (thedate)编号 (id)名称 (name)
2019-08-2710001storm
2019-08-2710002flink
2019-08-2710003spark
2019-08-2710004flume
2019-08-2710005zookeeper
2019-08-2710006kafka
2019-08-2710007hadoop
2019-08-2810004日志采集
2019-08-2910005调度
2019-08-3010007集群

方法一:自连接取最新

SELECT
	t1.thedate,t1.id,t1.name	
FROM
	test t1
	LEFT JOIN test t2 ON t1.id = t2.id 
	AND t1.thedate < t2.thedate 
WHERE t2.id IS NULL 
ORDER BY id`

结果:

thedateidname
2019-08-2710001storm
2019-08-2710002flink
2019-08-2710003spark
2019-08-2810004日志采集
2019-08-2910005调度
2019-08-2710006kafka
2019-08-3010007集群

方法二:拼接取最新

SELECT
	max( thedate ) thedate,
	id,
	SUBSTR( max( name ), 12, length( max( name ) ) ) name 
FROM
	( SELECT 
		thedate, id, concat( thedate, ' ', name ) name 
		FROM test 
	) t 
GROUP BY id
ORDER BY id

结果:

thedateidname
2019-08-2710001storm
2019-08-2710002flink
2019-08-2710003spark
2019-08-2810004日志采集
2019-08-2910005调度
2019-08-2710006kafka
2019-08-3010007集群

在数据量大的情况下,方法二性能较好

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值