现有实际需求如下:表TBL(userid,logintime,dat),userid为用户名(KEY),logintime为登录时间,dat为某些数据,请写SQL语句返回每个有记录的用户在最后一次登录所产生的userid,dat结果集。
这个问题其实是一个广谱性的问题,在很多场景下会遇到。那么对于这类单表分类(userid相同的视为一类)取最值(或者是最大两个或三个值)的问题,如何设计SQL才能使效率最高?
现有实际需求如下:表TBL(userid,logintime,dat),userid为用户名(KEY),logintime为登录时间,dat为某些数据,请写SQL语句返回每个有记录的用户在最后一次登录所产生的userid,dat结果集。
这个问题其实是一个广谱性的问题,在很多场景下会遇到。那么对于这类单表分类(userid相同的视为一类)取最值(或者是最大两个或三个值)的问题,如何设计SQL才能使效率最高?
5 回答3.3k 阅读✓ 已解决
2 回答2.9k 阅读✓ 已解决
1 回答2.4k 阅读✓ 已解决
1 回答2.4k 阅读✓ 已解决
1 回答2k 阅读✓ 已解决
3 回答2.3k 阅读
2 回答1.5k 阅读
@sub 同学先排序再
group by
的方法是可以的,这里再写一种效率更高的方法。当然对logintime
建立索引是非常可取的一点。参考:分组计算的SQL设计探讨