选择字段匹配的数据

时间:2012-01-16 23:03:33

标签: mysql sql

所以,我有这个表结构

+----+---------+-----------+---------+------+---------------------+
| id | to_user | from_user | message | read | sent                |
+----+---------+-----------+---------+------+---------------------+
|  1 |      2  |        1  | test    |    0 | 2012-01-11 13:20:14 |
+----+---------+-----------+---------+------+---------------------+

正如你所看到的,我用这个非常简单的聊天,现在我想做的就是得到每个对话的清单。因此,我需要找到一种方法,从每个用户的会话中选择一个最后一条消息。所以我需要像

这样的东西
   select * 
   from `messages` 
   where `to_user` = 2 --(this is my user id)
          and `to_user` = `from_user` 
   LIMIT 1

现在我知道LIMIT总会返回1条记录而其他逻辑可能不太好,无论如何,如果有人得到我想要的东西,可以帮助我一点点。)

1 个答案:

答案 0 :(得分:2)

IN()子查询选择两个用户之间具有最新id的每一行的sent。外部查询选择从子查询返回的每个id的剩余列。

更新修复了HAVING子句...

SELECT * FROM table WHERE id IN (
  SELECT id FROM table GROUP BY to_user, from_user HAVING sent = MAX(sent)
);