如有些数据是历史保存性质的,
在查回时需要根据某个列分组,并且还要根据另一列进行排序后获取最大的或者最小的那一行数据进行保留:
id | name | score | date |
---|---|---|---|
1 | jack | 90 | 3.10 |
2 | jack | 92 | 3.11 |
3 | lucy | 89 | 3.10 |
4 | lucy | 93 | 3.11 |
如上表,需要查出jack和lucy的最新成绩
那么最终的sql可能就是
select t2.name,t2.score from
(select t1.name,t1.score from 得分统计表 t1 where t1.date is not null or t1.date having 1 order by t1.date desc)t2
group by t2.name
那么取出来的就应该是
name | score | date |
---|---|---|
jack | 92 | 3.11 |
lucy | 93 | 3.11 |
实际我在做的业务是可以的,如需测试请自行建表!
bug fixed:
这里有个问题就是说当用having 1时不会查询到只有一条数据的数据 ,所以见t1.date is not null是后增的修复后的语句
资料:
https://blog.csdn.net/weixin_38450840/article/details/88836170
https://blog.csdn.net/weixin_43941717/article/details/123001599