Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 选择字段匹配的数据_Mysql_Sql - Fatal编程技术网

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)
);