查询返回错误字段

时间:2012-01-17 21:11:35

标签: mysql sql

  

可能重复:
  Query returns additional rows

首先,我很抱歉,如果有人看到我之前发布此内容,但我真的需要快速回答,而且没有1回应我的问题了。所以这是我的问题:

我有这种简单聊天的表格:

消息表结构

+----+---------+-----------+---------+------+------+
| id | to_user | from_user | message | read | sent |
+----+---------+-----------+---------+------+------+

我需要获得看起来像那个用户的每个对话列表

用户名----消息----日期

我正在使用此查询来执行此操作:

SELECT *
FROM `messages`
WHERE `sent`
IN (
   SELECT MAX( `sent` )
   FROM `messages`
   WHERE `from_user` = '1' --id of user who is requesting the list
   OR `to_user` = '1'  --id of user who is requesting the list
   GROUP BY `to_user` , `from_user`
   )
LIMIT 0 , 30

每个人都建议我删除GROUP BY,但如果我这样做,那么它会返回我与一个用户的最后一次对话,我需要得到所有时间的对话,如下所示:

User-1 talked with user-2
user-1 talked with user 10
user-1 talked with user 32 and so on...

这个工作几乎没问题,我的问题是它返回的不是那个会话的最后一条消息,而是来自每个用户的最后一条消息所以让我们说用户1和2正在说话,我得到这个列表,这就是我的意思得到:

+----+---------+-----------+-----------------------+------+---------------------+
| id | to_user | from_user | message               | read | sent                |
+----+---------+-----------+-----------------------+------+---------------------+
|  3 |       2 |         1 | Message 1 from user 1 |    0 | 2012-01-11 13:20:54 |
|  4 |       1 |         2 | Message 1 from user 2 |    0 | 2012-01-11 13:24:59 |
+----+---------+-----------+-----------------------+------+---------------------+

我想得到的最后一条消息是4,因为发送的字段是第4条记录中最高的,所以我该如何解决呢?

0 个答案:

没有答案