在我的留言页面上,我想显示最新的对话列表。列表就像是从 pc 发送消息到 pc2 并且 pc2 发送回 pc 然后它应该显示只有一行。
我试过了这个查询
SELECT id,col2,col3,col4 从yourtable GROUP BY col2,col3;
Selecting distinct 2 columns combination in mysql
但它导致了
更新
我试过了这个查询
SELECT * FROM tbl_primessages frmid = 3466 OR toid = 3466
GROUP BY frmid,toid ORDER BY tbl_primessages
。timestemp
DESC
更新2 应该是两个人的最新时间
答案 0 :(得分:3)
下面的查询使用了一个最小/最大的技巧来将涉及同一对用户的消息组合在一起。然后,我们可以保留每对人的最新对话。
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
在这里演示:
答案 1 :(得分:0)
在SELECT中仅使用GROUP BY中的字段加上一些聚合函数(COUNT,AVG,MIN,MAX等)。
SELECT frmid, toid
FROM tbl_primessages
Where frmid = 3466 OR toid = 3466
GROUP BY frmid, toid