每个组合两个ID只能获得一行

时间:2016-01-03 19:01:52

标签: mysql

以下是包含用户已发送给彼此的消息的表的摘录。

id | from_user | to_user | time 
---+-----------+---------+--------------------
 1 | 2         | 1       | 2016-01-03 01:22:14
 2 | 1         | 2       | 2016-01-03 01:26:20
 3 | 2         | 3       | 2016-01-03 01:27:39
 4 | 1         | 3       | 2016-01-03 08:15:11
 5 | 1         | 2       | 2016-01-03 09:44:51
 6 | 2         | 3       | 2016-01-03 10:13:13
 7 | 3         | 1       | 2016-01-03 11:29:19
 8 | 3         | 2       | 2016-01-03 14:54:41

鉴于此表,我想为每个from_user / to_user组合选择最新的行,无论用户1是否向用户2发送了消息,反之亦然。因此上述情况的结果应如下所示:

id | from_user | to_user | time 
---+-----------+---------+--------------------
 5 | 1         | 2       | 2016-01-03 09:44:51
 7 | 3         | 1       | 2016-01-03 11:29:19
 8 | 3         | 2       | 2016-01-03 14:54:41

到目前为止,我尝试使用以下查询从用户表创建笛卡尔积:

SELECT a.id, b.id
FROM user a, user b
WHERE a.id < b.id

这很好但现在我完全不知道如何利用它来遍历“messages”表并检索每个用户组合的最新行。

我非常感谢任何帮助。

0 个答案:

没有答案