Mysql 选择字段匹配的数据
所以,我有这个表结构Mysql 选择字段匹配的数据,mysql,sql,Mysql,Sql,所以,我有这个表结构 +----+---------+-----------+---------+------+---------------------+ | id | to_user | from_user | message | read | sent | +----+---------+-----------+---------+------+---------------------+ | 1 | 2 | 1 | test
+----+---------+-----------+---------+------+---------------------+
| 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
总是会返回一条记录,其他逻辑可能不太好,不管怎样,如果有人得到了我想要的,可以帮我一点忙:)IN()子查询选择两个用户之间最近发送的的每一行的id
。外部查询为从子查询返回的每个id
选择其余列
更新修复了HAVING子句。。。
如果您要进行多个“聊天”会话,我建议修改您的查询以识别聊天会话。如果“from_user”和“to_user”都在和2-3个人聊天呢。您如何知道从一个人到另一个人的最新聊天元素是哪一个,以及他们与之聊天的正确聊天会话?
SELECT * FROM table WHERE id IN (
SELECT id FROM table GROUP BY to_user, from_user HAVING sent = MAX(sent)
);