今天写代码时遇到一个需求是这样的:

取表内最新的一条数据,根据用户名分组

本来以为又是那种image-20200720195225456需求,然后就开始写sql,写完一运行,报错。。。

然后发现GROUP BY必须放在ORDER BY的前面

但这样又会导致不能取最新的一条数据

于是用了一个“子查询”的办法解决image-20200720195922053

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<select id="cowBeer" resultType="map" parameterType="map">
SELECT
[字段]
FROM (
SELECT DISTINCT
[字段]
FROM [表名] AS msg,
[表名] AS user
WHERE [条件]
ORDER BY [创建时间字段] DESC
) r
GROUP BY r.[分组条件]
ORDER BY r.[创建时间字段] DESC
</select>