簡體   English   中英

MySQL根據最新條目對多個列進行不同選擇

[英]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.

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