• GROUP BY 分组后得到最新即时间最大的一条数据(需添加limit才可生效)


    当使用GROUP BY 分组,默认返回的数据是组中最小的记录即id最小的数据,

    当开发中经常会需要分组后将最新的数据放在前面,

    为了实现需求,使用了嵌套查询,分别使用order by来排序

    SELECT
        id,
        from_id,
        to_id,
        conversation_id,
        created_date,
        has_read,
        content
    FROM
        ( SELECT * FROM message WHERE from_id = 6 OR to_id = 6 ORDER BY created_date DESC) AS tt 
    GROUP BY
        conversation_id 
    ORDER BY
        created_date DESC

     但执行结果依然是id最小的那条数据 

    最终添上limit max_size 后才生效

    SELECT
        id,
        from_id,
        to_id,
        conversation_id,
        created_date,
        has_read,
        content
    FROM
        ( SELECT * FROM message WHERE from_id = 6 OR to_id = 6 ORDER BY created_date DESC limit 100) AS tt 
    GROUP BY
        conversation_id 
    ORDER BY
        created_date DESC

  • 相关阅读:
    Linux系统网络文件配置
    Linux系统修改日期时间
    8、mysql索引
    7、mysql正则表达式、事务、alter命令
    6、mysql数据操作
    5、mysql数据类型
    4、mysql数据库操作
    3、mysql管理
    2、mysql安装
    1、mysql教程
  • 原文地址:https://www.cnblogs.com/mjbrian/p/13955070.html
Copyright © 2020-2023  润新知