group by分组后获得每组中时间最大的那条记录,亲测有效

一、问题

GROUP BY分组后取最新时间的一条记录的SQL的解决方案。

二、解决方案

SELECT
	b.`no`,
	b.ver,
	b.gen,
	b.ip
FROM
	(
		SELECT
			a.id,
			a.`no`,
			a.ver,
			a.gen,
			a.crtime,
			a.ip,
			a.mt
		FROM
			zs_fet_heartbeat AS a
		WHERE
			a.crtime
		HAVING
			1
		ORDER BY
			a.crtime DESC
	) b
GROUP BY
	b.`no`;

特别感觉https://me.csdn.net/blog/weixin_42220129 的解答

 

where 后面接 having 1 的作用是什么, 我也不清楚,如果有知道的网友,希望能在评论中进行解惑,感谢!!!

这个having的作用好像是确保group以后,取到的是最上面的一条数据,但是具体什么原理,不清楚。

你可能感兴趣的:(数据库)