java - mysql group by 如何解决聊天分组 取最新记录
大家讲道理
大家讲道理 2017-04-17 13:25:24
[Java讨论组]

数据结构

id sendId receiverId      postDate
1     1            2         2015-04-06 12:12:01
2     1            3         2015-04-06 12:13:01
3     2            1         2015-04-06 12:14:01
4     2            3         2015-04-06 12:15:01
5     3            2         2015-04-06 12:16:01
6     4            1         2015-04-06 12:17:01
7     1            4         2015-04-06 12:18:01
8     2            4         2015-04-06 12:19:01

意思就是 按照( 1-2 ,2-1 )(1-3, 3-1) (1-4 ,4-1)( 2-4 ,4-2)
这样分组,并且取分组最新的数据,为了实现聊天记录的获取。

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(2)
大家讲道理

假定你表名为message

select * from message where (select count(*) from message as m where m.sendId = message.sendId and m.postDate >= message.postDate ) < 2

天蓬老师

下面有两种方法:假设你的表叫t_biz_sign ,'最新列'字段叫create_time ,需要分组的字段叫foreign_id
SELECT sign.*
FROM t_biz_sign sign
WHERE NOT exists(SELECT 1

             FROM t_biz_sign
             WHERE foreign_id = sign.foreign_id
                   AND sign.create_time < create_time)

ORDER BY create_time DESC;

SELECT *
FROM t_biz_sign sign
WHERE (SELECT count(*)

   FROM t_biz_sign AS m
   WHERE m.foreign_id = sign.foreign_id AND m.create_time >= sign.create_time) < 2;
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号