msyql 分组排序问题 传统写法 group by 和 order by获取不到想要的数据,数据混乱

2024-01-02 21:08:09

? ? ? ? ? 发生场景:用户表被删除,根据用户日志操作最后一条数据修复用户表

? ? ? ?第一次用sql?
SELECT
	*
FROM
	(
		SELECT
			UserID,
			Score,
			MAX(ID) AS MaxLoginDate
		FROM
			user_inout_log_202312
		GROUP BY
			UserID
		ORDER BY
			ID DESC
	) t
ORDER BY
	Score DESC;

结果:

根据数据验证这个结果是错误的,不是我们想要的数据

第二条sql
	SELECT UserID,Score,Diamond,Lottery from (
		SELECT
			user_inout_log_202312.*

		FROM
			user_inout_log_202312
		INNER JOIN (
			SELECT
				UserID,
				MAX(ID) AS MaxLoginDate
			FROM
				user_inout_log_202312
			GROUP BY
				UserID
		) AS latest ON user_inout_log_202312.UserID = latest.UserID
		AND user_inout_log_202312.ID = latest.MaxLoginDate ORDER BY Score desc
) t ;

子查询获取最新的用户id,要user_inout_log_202312 的全部数据 用inner join 获取重复的数据

经过验证第二条sql 使我们想要的结果

文章来源:https://blog.csdn.net/weixin_39645311/article/details/135344686
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。