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,說明這是可行的!那麼有其他更高效正確的寫法嗎?歡迎老鐵們探討交流

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章