在我的消息页面上,我想显示最新的对话列表。如果我从 pc 发送消息到 pc2 并且 pc2 发送回 pc 那么它应该显示只有一行。
我试过这个查询
选择 id, col2, col3, col4 从你的 table GROUP BY col2, col3;
Selecting distinct 2 columns combination in mysql
但是结果是
更新:
我试过这个查询
SELECT * FROM tbl_primessages 其中 frmid = 3466 或 toid = 3466
GROUP BY frmid,toid ORDER BY tbl_primessages
.timestemp
DESC
更新 2 应该是两个最近的时间
最佳答案
下面的查询使用了最小/最大技巧将涉及同一对用户的消息分组在一起。然后,我们可以保留每对人的最新对话。
SELECT t1.*
FROM tbl_primessages t1
INNER JOIN
(
SELECT
LEAST(frmid, toid) AS frmid,
GREATEST(frmid, toid) AS toid,
MAX(timestamp) AS latest_ts
FROM tbl_primessages
GROUP BY LEAST(frmid, toid), GREATEST(frmid, toid)
) t2
ON LEAST(t1.frmid, t1.toid) = t2.frmid AND
GREATEST(t1.frmid, t1.toid) = t2.toid AND
t1.timestamp = t2.latest_ts
此处演示:
Rextester
关于mysql - 获取具有两列组合的唯一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43819185/