2

如图所示,我有一个聊天表。我想像 facebook 风格一样对聊天列表进行分组。选择用户 2 的对话后的表格

此处用户 2 已登录,并使用以下方式选择了他的对话

SELECT * 
FROM  `chat`  `t` 
WHERE  `from` =2
OR  `to` =2
ORDER BY sent DESC

但在这里我想要 2 和任何其他用户之间的最新单个条目。其中 2 可以在 from 或 to 列中。作为最终结果,它应该分别返回 2 个 id 为 25 和 17 的条目。

4

2 回答 2

5
SELECT * , (
r.from + r.to
) AS dist
FROM (

SELECT * 
FROM  `cometchat` t
WHERE (
t.from =2
OR t.to =2
)
ORDER BY t.sent DESC
)r
GROUP BY dist
ORDER BY r.sent DESC
于 2013-07-22T12:18:25.210 回答
1

试试这个

SELECT * 
FROM  `chat`  `t` 
WHERE id IN (SELECT MAX(s.id) FROM chat s WHERE s.`from` =2
OR  s.`to` =2 GROUP BY (IF(s.`from`=2, s.`to`, s.`from`)))
ORDER BY sent DESC
于 2013-07-22T11:47:40.730 回答