Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >mysql 获取分组中最新记录SQL写法示例 select group by order by

mysql 获取分组中最新记录SQL写法示例 select group by order by

作者头像
一个会写诗的程序员
发布于 2020-05-18 07:23:47
发布于 2020-05-18 07:23:47
2.6K00
代码可运行
举报
运行总次数:0
代码可运行
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xxx.infrastructure.core.version.dao.VersionDAO">
    <select id="batchQueryTopVersionList"
            parameterType="com.xxx.infrastructure.api.version.param.VersionQueryParam"
            resultMap="com.xxx.infrastructure.core.version.dao.base.BaseVersionDAO.ResultMapWithBLOBs">

        select a.* from
        (select * from version WHERE is_deleted = 'n'
        and biz_type = #{versionQueryParam.bizType}
        and domain = #{versionQueryParam.domain}
        <if test="versionQueryParam.bizIdList != null and versionQueryParam.bizIdList.size > 0">
            and biz_id in
            <foreach collection="versionQueryParam.bizIdList" separator="," index="index" open="(" close=")"
                     item="item">
                #{item}
            </foreach>
        </if>
        ) a
        join
        (SELECT
        biz_id,
        history_id,
        max(gmt_create) as gmt_create
        FROM version
        WHERE is_deleted = 'n'
        and biz_type = #{versionQueryParam.bizType}
        and domain = #{versionQueryParam.domain}
        <if test="versionQueryParam.bizIdList != null and versionQueryParam.bizIdList.size > 0">
            and biz_id in
            <foreach collection="versionQueryParam.bizIdList" separator="," index="index" open="(" close=")"
                     item="item">
                #{item}
            </foreach>
        </if>
        group by biz_id) b
        on concat(a.biz_id,a.gmt_create) = concat(b.biz_id,b.gmt_create)
    </select>
</mapper>

I have a mysql statement

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT * 
FROM tbl_messages 
WHERE to_user_id = '$user_id' OR from_user_id = '$user_id' 
GROUP BY from_user_id 
ORDER BY date_sent DESC

and it is producing the correct results however they are not in the correct order.

The grouping works well but it record displayed in the group is the first recorded entered into the DB but I would like the latest record to be displayed in each group.

Is there a way to have the latest record displayed for each group?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
2011-12-19 12:16:25 This is the first message
2011-12-19 12:18:20 This is the second message
2011-12-19 12:43:04 This is the third message

The group shows 'This is the first message' where I would like 'This is the third message' as that is the most recent record/message.

Cheers.

This may work (but not guaranteed):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT * 
FROM
  ( SELECT *
    FROM tbl_messages 
    WHERE to_user_id = '$user_id' OR from_user_id = '$user_id' 
    ORDER BY date_sent DESC
  ) tmp
GROUP BY from_user_id 
ORDER BY date_sent DESC

This should work:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT t.* 
FROM 
    tbl_messages AS t
  JOIN
    ( SELECT from_user_id 
           , MAX(date_sent) AS max_date_sent
      FROM tbl_messages 
      WHERE to_user_id = '$user_id' OR from_user_id = '$user_id' 
      GROUP BY from_user_id 
    ) AS tg
    ON  (tg.from_user_id, tg.max_date_sent) = (t.from_user_id, t.date_sent)
ORDER BY t.date_sent DESC

参考资料

https://stackoverflow.com/questions/8556283/mysql-select-group-by-order


Kotlin开发者社区

专注分享 JavaKotlin、Spring/Spring Boot、MySQL、redis、neo4j、NoSQLAndroid、JavaScript、React、Node、函数式编程、编程思想、"高可用,高性能,高实时"大型分布式系统架构设计主题。

High availability, high performance, high real-time large-scale distributed system architecture design

分布式框架:Zookeeper、分布式中间件框架等 分布式存储:GridFS、FastDFS、TFS、MemCache、redis等 分布式数据库:Cobar、tddl、Amoeba、Mycat 云计算大数据、AI算法 虚拟化云原生技术 分布式计算框架:MapReduceHadoopStorm、Flink等 分布式通信机制:Dubbo、RPC调用、共享远程数据、消息队列 消息队列MQ:Kafka、MetaQ,RocketMQ 怎样打造高可用系统:基于硬件、软件中间件、系统架构等一些典型方案的实现:HAProxy、基于Corosync+Pacemaker的高可用集群套件中间件系统 Mycat架构分布式演进 大数据Join背后的难题:数据、网络、内存和计算能力的矛盾和调和 Java分布式系统中的高性能难题:AIO,NIO,Netty还是自己开发框架? 高性能事件派发机制:线程池模型、Disruptor模型等等。。。

合抱之木,生于毫末;九层之台,起于垒土;千里之行,始于足下。不积跬步,无以至千里;不积小流,无以成江河。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
千万级支付对账系统怎么玩(下篇)?
在 DP 核对之前,我们需要将对账系统收集的数据,从 MySQL 导入 DP Hive 表中。
andyxh
2022/05/10
8930
千万级支付对账系统怎么玩(下篇)?
「IM系列」WebSocket教程:消息持久化实现与应用
本次采用服务器端消息持久化,当服务器接收到WebSocket消息时,可以将消息保存到数据库或其他持久化存储中。这样,即使客户端断开连接,服务器仍然可以在需要时检索和处理这些消息。
Tinywan
2023/12/13
9980
「IM系列」WebSocket教程:消息持久化实现与应用
千万级支付对账系统是怎么设计的?
今天给大家分享一篇关于对账系统设计的文章,出自在支付行业摸爬滚打好几年的小黑哥之手。
架构之家
2022/09/01
3.4K0
千万级支付对账系统是怎么设计的?
分布式全局唯一ID生成方案(附源码)
Java中 JDK自带的 UUID产生方式就是版本4根据随机数生成的 UUID 和版本3基于名字的 UUID,有兴趣的可以去看看它的源码。
小熊学Java
2023/07/16
1.2K0
分布式全局唯一ID生成方案(附源码)
面试总被问分布式ID怎么办? 滴滴(Tinyid)甩给他
接着《一口气说出 9种 分布式ID生成方式,面试官有点懵了》来继续详细的介绍分布式ID生成器,大家比较感兴趣的美团(Leaf)、滴滴(Tinyid)、百度(uid-generator)三个开源项目,美团(Leaf)已经讲完,详见《9种分布式ID生成之美团(Leaf)实战》,今天结合实战搞一下滴滴开源的(Tinyid)。
程序员小富
2020/03/14
1.3K0
面试总被问分布式ID怎么办? 滴滴(Tinyid)甩给他
MySQL——SQL练习题
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/100174.html原文链接:
全栈程序员站长
2021/05/21
8910
MySQL——SQL练习题
Shell查询数据库,和发送邮件
sendmail.sh !/bin/bash # function getDateStr() { echo date -d &quot;-$1 day&quot; +%Y-%m-%d } 定义配置文件的地址 PROPERTY_FILE="/home/xueping.you/conf/conf.properties" 数据库 db_name=sudo cat $PROPERTY_FILE | grep &quot;mysql.host&quot; | awk -F '=' '{print $2}' 用户名 d
用户1503405
2021/10/29
6230
「IM系列」WebSocket教程:私聊和群聊实现,数字化转型!
群聊: 群聊是指在一个群组中,多个成员可以互相交流和分享信息,多人参与的聊天对话。您可以创建或加入不同的群组,与团队成员、同事或其他人进行群组讨论和协作。可以容纳多个成员,适合用于团队讨论和群体交流。
Tinywan
2023/12/13
6920
「IM系列」WebSocket教程:私聊和群聊实现,数字化转型!
SpringCloud Alibaba Seata处理分布式事务
​ 单体应用被拆分成微服务应用, 原来的三个模块被拆分成三个独立的应用,分别使用三个独立的数据源。
OY
2022/03/17
5080
SpringCloud Alibaba Seata处理分布式事务
存储优化(2)-排序引起的慢查询优化
排序引起的慢查询,通常不是那么容易发现,经常和数据分布有关系。往往在业务刚开始时并没有什么问题,但是随着业务的发展,数据分布呈现一种特定的规律,导致了慢查询,或者并不是什么慢查询,但是随着并发请求数增加,数据库的IOPS使用率变高,进一步导致cpu/内存使用率飙高。造成线上故障。
方丈的寺院
2020/03/20
9350
面试被问分布式ID怎么办? 滴滴(Tinyid)甩给他
Tinyid是滴滴开发的一款分布式ID系统,Tinyid是在美团(Leaf)的leaf-segment算法基础上升级而来,不仅支持了数据库多主节点模式,还提供了tinyid-client客户端的接入方式,使用起来更加方便。但和美团(Leaf)不同的是,Tinyid只支持号段一种模式不支持雪花模式。
程序员小富
2020/07/13
4080
面试被问分布式ID怎么办? 滴滴(Tinyid)甩给他
Seata 分布式事务
单体应用被拆分成微服务应用,原来的三个模块被拆分成三个独立的应用,分别使用三个独立的数据源,业务操作需要调用三三 个服务来完成。此时每个服务内部的数据一致性由本地事务来保证, 但是全局的数据一致性问题没法保证。
用户9615083
2022/12/25
8280
Seata 分布式事务
ShardingSphere实践(3)——数据分片
        传统的将数据集中存储至单一节点的解决方案,在性能、可用性和运维成本这三方面已经难于满足海量数据的场景。
用户1148526
2022/06/05
3.9K0
ShardingSphere实践(3)——数据分片
MySQL 大分页查询的优化之道
大部分开发和DBA同行都对分页查询非常非常了解,看帖子翻页需要分页查询,搜索商品也需要分页查询。那么问题来了,遇到上千万或者上亿的数据量怎么快速的拉取全量,比如大商家拉取每月千万级别的订单数量到自己独立的ISV做财务统计;或者拥有百万千万粉丝的公众大号,给全部粉丝推送消息的场景。本文讲讲个人的优化分页查询的经验,抛砖引玉。
用户2781897
2019/06/03
2.7K0
微服务痛点-基于Dubbo + Seata的分布式事务(TCC模式)
Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。
sanshengshui
2020/12/31
1.1K0
MYSQL学习:GROUP BY分组取最新的一条记录
日常开发当中,经常会遇到查询分组数据中最新的一条记录,比如统计当前系统每个人的最新登录记录、外卖系统统计所有买家最新的一次订单记录、图书管理系统借阅者最新借阅书籍的记录等等。今天给大家介绍一下如何实现以上场景的SQL写法,希望对大家能有所帮助!
小明互联网技术分享社区
2021/09/30
20.5K0
MYSQL学习:GROUP BY分组取最新的一条记录
mac 上学习k8s系列(53)seata-go
https://github.com/seata/seata-go是https://github.com/seata/seata的golang客户端,目前支持at和tcc两种分布式事务的实现。虽然官方的文档给的例子描述了如何处理分布式事务,但是如何部署和使用语焉不详。下面介绍下两种部署方式file、db
golangLeetcode
2022/12/17
6680
Hive 中 sort by 和 order by 的区别
在 Hive 中, SORT BY 和 ORDER BY 都用于对查询结果进行排序,但它们在实现方式和适用场景上有一些区别。
火之高兴
2024/07/25
3890
微服务(十六)——Seata 分布式事务框架
单体应用被拆分成微服务应用,原来的三个模块被拆分成三个独立的应用,分别使用三个独立的数据源,业务操作需要调用三三 个服务来完成。此时每个服务内部的数据一致性由本地事务来保证, 但是全局的数据一致性问题没法保证。
不愿意做鱼的小鲸鱼
2022/10/05
1.9K0
微服务(十六)——Seata 分布式事务框架
SpringCloud Alibaba Seata处理分布式事务
分布式之后:   单体应用被拆分成微服务应用,原来的三个模块被拆分成三个独立的应用,分别使用三个独立的数据源,业务操作需要调用三个服务来完成。此时每个服务内部的数据一致性由本地事务来保证,但是全局的数据一致性问题没法保证。
别团等shy哥发育
2023/02/25
2870
SpringCloud Alibaba Seata处理分布式事务
相关推荐
千万级支付对账系统怎么玩(下篇)?
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文