假设有如下库表(t_score):
user | score | updtime |
---|---|---|
A | 99 | 2020-12-24 12:00:01 |
A | 96 | 2020-12-21 12:01:31 |
A | 76 | 2020-12-24 12:02:41 |
B | 65 | 2020-12-24 12:06:01 |
B | 70 | 2020-12-21 12:24:01 |
C | 83 | 2020-12-24 12:31:01 |
C | 66 | 2020-12-22 12:24:01 |
C | 91 | 2020-12-24 12:51:01 |
C | 72 | 2020-12-23 12:49:01 |
D | 96 | 2020-12-24 12:21:01 |
D | 91 | 2020-12-23 12:13:01 |
想要查询每个用户最新的一条成绩,可以通过group by语句来进行查询,SQL语句如下:
select user, score, updtime from (
select * from t_score order by updtime desc
) a group by user;
这里利用了MySQL中SQL语句如果使用了group by关键字,并且select关键字后面的字段不是聚合函数也不在group by关键字后,则默认取匹配的数据的第一条记录的值。
但是该方法在sql_mode=only_full_group_by的数据库中无法执行,因为会提示语法错误。