MySQL分组取组里最新一条记录

最近写了条SQL,没注意踩坑了,丢脸了……
SQL要求: 分组后查询组内最新的一条记录,公司用的是MySQL,Oracle我就先不说了。不多说了,直接上SQL,这里附上一个在线格式化SQL的地址,比Navicat里面的美化SQL要好些,语句紧凑些
点我 => * 在线代码格式化 * <= 点我

SELECT t.holder_entity_id, t.tenant_id, MAX(t.maintain_time) AS maintain_time, t.maintain_user_id
	, t.maintain_content, t.valid_flag, t.update_time
FROM t_tool_holder_maintain t
GROUP BY t.holder_entity_id

结果如下:
注意时间和内容
查了表的数据发现时间对不上。
在这里插入图片描述

我只看了时间以为是最新的记录,后来发现只有时间是最新的,那条记录不是,坑了坑了

那就是我SQL出问题了,修改成子查询语句如下:

SELECT *
FROM (
	SELECT t.holder_entity_id, t.tenant_id, t.maintain_time, t.maintain_user_id, t.maintain_content
		, t.valid_flag, t.update_time
	FROM t_tool_holder_maintain t
	ORDER BY maintain_time DESC
	LIMIT 999
) tt
GROUP BY holder_entity_id

结果如下:

发现没,aaa那条记录没了,id相同的去掉了,OK,说明这是可行的!那么有其他更高效正确的写法吗?欢迎老铁们探讨交流

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值