鍍金池/ 問答/PHP  數(shù)據(jù)庫  網(wǎng)絡(luò)安全/ mysql 一張表中根據(jù)兩個字段分組去重,有SQL大佬么(自己已解決)

mysql 一張表中根據(jù)兩個字段分組去重,有SQL大佬么(自己已解決)

需求背景

一個消息記錄表,要取出與當(dāng)前用戶相關(guān)的消息記錄,然后兩個相同用戶之前的消息只展示最新發(fā)送一條,重復(fù)的去掉

數(shù)據(jù)表

clipboard.png

預(yù)期效果

假如當(dāng)前用戶是8,以上圖表數(shù)據(jù)為例, 我需要取出展示的數(shù)據(jù)應(yīng)該是:

記錄1,記錄4,記錄5

請問大佬們,怎么用sql實現(xiàn)以上需求,

補上解決方案

在數(shù)據(jù)表加了一個group字段,把發(fā)送用戶id和接收用戶id 按用戶id從小到大的順序拼接存在里面
然后查出與當(dāng)前用8相關(guān)的數(shù)據(jù),按group這個字段分組 再按send_time 排序就ok了

clipboard.png

回答
編輯回答
絯孑氣

你的當(dāng)前用戶是對應(yīng)的哪個字段,而且為何是拿記錄1,4,5, 而不是 記錄3,4,5

2017年11月1日 17:20
編輯回答
老梗

只是提供一個思路,性能你需要自己再考慮

// 嵌套查詢
SELECT * FROM (SELECT * FROM message ORDER BY send_time DESC ) AS tempData GROUP BY from_user_id ORDER BY id ASC
2018年4月21日 23:53