MySQL13分组查询取每组最新的一条数据

Posted 花生喂龙

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL13分组查询取每组最新的一条数据相关的知识,希望对你有一定的参考价值。

前言:获取所有用户填写的最新一条地址数据

正文:

错误写法:

mysql5.7时,子查询的排序已经变为无效了

SELECT * FROM (SELECT * FROM address ORDER BY create_time DESC) a GROUP BY user_id

方法1:

此时子查询就不光是排序,所以此时排序会生效,但有条数限制

SELECT * FROM (SELECT * FROM address ORDER BY create_time DESC LIMIT 10000) a GROUP BY user_id

方法2:

通过MAX函数获取最新的时间和人员ID(分组条件),然后作为一张表和原来的数据进行联查

注:这种方式如果有两条数据的user_id和create_time都相等会查出来两条数据,这种情况只能distinct一下了

SELECT t.* 
  FROM (SELECT user_id, max(create_time) as create_time FROM address GROUP BY user_id) a 
 INNER JOIN address t 
    ON t.user_id = a.user_id and t.create_time=a.create_time

参考博客:

MySQL分组查询每组最新的一条数据(通俗易懂) - 劈天造陆 - 博客园
https://www.cnblogs.com/java-spring/p/11498457.html

以上是关于MySQL13分组查询取每组最新的一条数据的主要内容,如果未能解决你的问题,请参考以下文章

mysql分组排序,取每组第一条数据

mysql关联表分组查询多条数据

MySQL分组查询每组最新的一条数据

Oracle分组后取每组第一条

mysql分组后,取每组的前3条数据(并且有顺序)

mysql分组 排序 取前2条