mysql:数据表mytable共有4个字段:word,lessonid,addtime,对记录以lessonid字段进行分组,按照分组中元素最新的时间字段lesson_time进行分组排序。分组排序以该分组中出现的最新addtime为顺序。
时间: 2024-09-22 20:08:49 浏览: 38
mysql批量更新多条记录的同一个字段为不同值的方法
在MySQL中,如果你想按照`lessonid`字段对`mytable`表进行分组,并在每个分组内按最新的`addtime`值进行排序,你可以使用以下SQL查询语句:
```sql
SELECT word, lessonid, MAX(addtime) AS latest_addtime
FROM mytable
GROUP BY lessonid
ORDER BY latest_addtime DESC;
```
这个查询做了两件事:
1. `GROUP BY lessonid`:将表按照`lessonid`字段进行分组。
2. `MAX(addtime) AS latest_addtime`:在每个分组内部计算`addtime`的最大值,作为最新添加时间的代表。
3. `ORDER BY latest_addtime DESC`:结果集按照`latest_addtime`字段降序排列,即最新的`addtime`在前。
注意,如果你需要的是整个记录而不仅仅是`addtime`,可以使用子查询或者窗口函数ROW_NUMBER()或RANK()配合LIMIT 1获取每组的最新记录:
```sql
SELECT t.*
FROM (
SELECT word, lessonid, addtime,
ROW_NUMBER() OVER(PARTITION BY lessonid ORDER BY addtime DESC) as rn
FROM mytable
) t
WHERE rn = 1;
```
阅读全文