[英]MySQL distinct select on multiple columns grouped by latest entry
對於我的用戶的收件箱,我只想獲取對話中最后一條消息的主題。
如您所見,ID為1的用戶進行了2次對話。 一個是質量檢查人員,另一個是管理員。 所以我想獲得消息ID:4和ID:6的主題。
我嘗試使用DISTINCT和GROUP BY created_at在單個查詢中執行此操作,但未成功。 這兩個ID和created_at可以用來獲得在談話的最后消息,但我更喜歡使用created_at。
select
*,
least (from_user_id, to_user_id) as min_uid,
greatest(from_user_id, to_user_id) as max_uid
from
(select * from message order by id desc) as message_reversed
group by
min_uid,
max_uid
SELECT id
, created_at
, from_user_id
, to_user_id
, subject
, text
FROM message m
JOIN
( SELECT MAX(id) max_id
FROM message
GROUP
BY LEAST(from_user_id,to_user_id)
, GREATEST(from_user_id,to_user_id)
) x
ON x.max_id = m.id;
鑒於“ id”是一個自動遞增的主鍵,並且您知道所使用的用戶的id,為什么不這樣查詢?
SELECT `text` as `lastMessage`
FROM `yourTable`
WHERE `from_user_id` = 1
ORDER BY `id` DESC
LIMIT 0,1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.