簡體   English   中英

獲取具有兩列組合的唯一行

[英]Get unique rows with combination of two columns

有這個私人聊天表 在此輸入圖像描述

在我的消息頁面上,我想顯示最新的對話列表。 列表將是如果從pc發送消息到pc2pc2發送回PC然后它應該只顯示一行。

我試過這個查詢

SELECT id,col2,col3,col4 FROM yourtable GROUP BY col2,col3;

在mysql中選擇不同的2列組合

但它導致了

在此輸入圖像描述

更新:

我試過這個查詢

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

在SELECT中僅使用GROUP BY中的字段加上一些聚合函數(COUNT,AVG,MIN,MAX等)。

SELECT frmid, toid
FROM tbl_primessages
Where frmid = 3466 OR toid = 3466
GROUP BY frmid, toid

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM