• MySQL group by后取每个分组中最新一条数据


    一、需求

    MySQL group by后取每个分组中最新一条数据

    二、实现

    1)方案1:使用min()和max()方法

    1、group by后取每个分组中最新一条数据

    SELECT MAX(test_id) FROM test GROUP BY test_user_id;

    2、group by后取每个分组中第一条插入的数据

    SELECT MIN(test_id) FROM test GROUP BY test_user_id;

    3、group by后,获取每个分组中大于一条数据的记录

    SELECT count(*) as num FROM test GROUP BY test_user_id HAVING num>1;

    4、group by后,获取每个分组中大于一条数据的记录的最新一条数据

    SELECT MAX(test_id) FROM test GROUP BY test_user_id HAVING COUNT(*)>1;

    5、group by后,获取每个分组中多条记录的test_id拼接串

    SELECT GROUP_CONCAT(test_id) FROM test GROUP BY test_user_id;

    6、group by后,获取每个分组中多条记录的test_id和test_ctime拼接串

    通过group_concat()可以获取每个分组中多条记录的test_id拼接串,GROUP_CONCAT(test_id,"=",test_ctime)返回分组中每条记录对应的test_id和test_ctime,test_id和test_ctime通过“=”号拼接,方便查看每条记录对应的数据;

    1. SELECT GROUP_CONCAT(test_id,"=",test_ctime),GROUP_CONCAT(test_id),GROUP_CONCAT(test_ctime)
    2. FROM test GROUP BY test_user_id;

     

    ***小结***

    sql中存在group by,那么sql中的select 语句是对每个分组进行操作的,而不是对分组的结果集进行操作的;

    比如select MAX(test_id) 返回每个分组中多条记录中最大的一条记录;

    select group_concat(test_id) 返回每个分组中多条记录的test_id拼接串;

    select 语句中包含聚合函数,将计算每组多条记录;汇总值

    2)方案2:order by和group by配置使用

    按照字段的排序order by后使用group by,方可获取每个分组中按照某字段排序后的第一条数据;

    使用方案1更便捷准确哦。

  • 相关阅读:
    金字塔思维
    解析java中的\r、\n、\r\n、\n\r的区别
    优思学院|精益生产就是丰田生产模式吗?
    国密是什么意思?属于商密还是普密?
    HotSpot垃圾算法实现之记忆集与卡表和写屏障
    Purism 推出注重隐私的 Linux 平板电脑
    避免使用违规词,企业新媒体营销应注重品牌形象维护
    春秋云镜 CVE-2014-3704
    JavaScript中获取数组中的元素数量及去重
    二维数组练习
  • 原文地址:https://blog.csdn.net/u010865136/article/details/126887638