看起来并不困难,但是就是一时都写不出来,请各位高手帮忙.
问题是这样的,显示出一个A发给其他用户,以及其他用户发给A的聊天记录,并且把A发给B,以及B发给A的记录合并,然后取出其中最新的一条.也就是说与A所有相关的聊天记录按人来排序,显示最新的一条,并统计总数.
问题是这样的,显示出一个A发给其他用户,以及其他用户发给A的聊天记录,并且把A发给B,以及B发给A的记录合并,然后取出其中最新的一条.也就是说与A所有相关的聊天记录按人来排序,显示最新的一条,并统计总数.
解决方案 »
- 为什么 lock tables 不起作用 ?
- MySQL 如何更新指定行数的记录?
- 好友表的问题
- 请问MySQL Community Server和MySQL Enterprise什么区别
- 如何复制表中多行记录,然后修改某个字段的值,插入到同一个表中? 在线等待中。。。。。。。。。。
- 江湖救急!要出人命了!MYSQL问题!
- 新手提问,如何在查询中查询小于 now()+2分钟 的记录?
- linux下安装mysql找不到mysql.h
- 如何在linux下调用mysql c API
- 登录mysql时出错:ERROR 2003:Can't connect to MySQL server on 'localhost'<10061>
- C# 中调用mySql带参数的存储过程 出现的问题
- 请高手用预处理把这句写一下,过程中使用。bm为表名的变量。
建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html
1. 你的 create table xxx .. 语句
2. 你的 insert into xxx ... 语句
3. 结果是什么样,(并给以简单的算法描述)
4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。
参考下贴中的多种方法http://blog.csdn.net/acmain_chm/article/details/4126306
[征集]分组取最大N条记录方法征集,及散分....
什么标准排序,详细说明
+-------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+----------------+
| id | bigint(20) | NO | PRI | NULL | auto_increment |
| src_user_id | bigint(20) | YES | | NULL | |
| des_user_id | bigint(20) | YES | | NULL | |
| content | varchar(500) | YES | | NULL | |
| date | datetime | YES | | NULL | |
| status | int(11) | YES | | NULL | |
+-------------+--------------+------+-----+---------+----------------+数据库为mysql5.5
1 2030 2015 。。
2 2015 2030 。。
3 2015 2030 。。
这样的3条纪录要合并在一起求和,并显示最新的那条
其他的纪录可能为:
4 2030 2040
5 2068 2030
6 2068 2030
这种没有相互发的情况下,就统计一方数据然后显示最新的一条就行了期望的结果是:
1 2015 3(数量) 与2015最新的那条,无论是发给2015的还是从2015发过来的。
2 2040 1 同上
3 2068 2 同上
FROM (SELECT T.USER_ID, COUNT(*) QTY, MAX(T.ID) ID
FROM (SELECT SRC_USER_ID USER_ID, ID
FROM TEST_TABLE
UNION ALL
SELECT DES_USER_ID USER_ID, ID
FROM TEST_TABLE) T
GROUP BY USER_ID) A,
TEST_TABLE B
WHERE A.ID = B.ID;
select w.user_id,w.id,w.qty,p.content from
(select t.user_id user_id , max(t.id) id , count(*) qty from ((select des_user_id user_id, id, status from message_private where src_user_id = 1377) union (select src_user_id user_id, id, status from message_private where des_user_id = 1377))t group by t.user_id order by status desc)w,message_private p where p.id = w.id;