本文主要是介绍msyql 分组排序问题 传统写法 group by 和 order by获取不到想要的数据,数据混乱,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
发生场景:用户表被删除,根据用户日志操作最后一条数据修复用户表
第一次用sql
SELECT*
FROM(SELECTUserID,Score,MAX(ID) AS MaxLoginDateFROMuser_inout_log_202312GROUP BYUserIDORDER BYID DESC) t
ORDER BYScore DESC;
结果:
根据数据验证这个结果是错误的,不是我们想要的数据
第二条sql
SELECT UserID,Score,Diamond,Lottery from (SELECTuser_inout_log_202312.*FROMuser_inout_log_202312INNER JOIN (SELECTUserID,MAX(ID) AS MaxLoginDateFROMuser_inout_log_202312GROUP BYUserID) AS latest ON user_inout_log_202312.UserID = latest.UserIDAND user_inout_log_202312.ID = latest.MaxLoginDate ORDER BY Score desc
) t ;
子查询获取最新的用户id,要user_inout_log_202312 的全部数据 用inner join 获取重复的数据
经过验证第二条sql 使我们想要的结果
这篇关于msyql 分组排序问题 传统写法 group by 和 order by获取不到想要的数据,数据混乱的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!