[英]select all messages sent to or received by logged user without duplicates
[英]mysql sorting messages sent and received
我的數據庫中有一個表
SenderId ReceiverId Message DateAndTime
int(11) int(11) varchar(200) DATETIME
我想以對話形式對登錄用戶的所有消息進行排序。 登錄的用戶之間的消息說UserA和UserB,UserC應該顯示如下:
UserA UserB Sent
UserA UserB Sent
UserB UserA Received
UserA UserC Sent
UserC UserA Received
UserA UserC Sent
UserD UserA Receied
UserA UserD Sent
我已經嘗試過此查詢,但結果與我預期的不同
SELECT * FROM messages WHERE SenderId like ? or ReceiverId like ? order by senderId, dateAndDate;
這可能有效。 它不會按時間對會話進行排序,而是按參與者進行排序。
SELECT CONCAT(LEAST(SenderID, ReceiverId), '-', GREATEST(SenderID, ReceiverId)) AS conversation
, SenderID, ReceiverID, Message, DateAndTime
FROM messages
WHERE SenderID = ? OR ReceiverId =?
ORDER BY conversation, DateAndTime DESC;
這應該可以解決問題。
SELECT SenderId, ReceiverId, Message, DateAndTime, CASE WHEN SenderId=1 THEN ReceiverId Else SenderId END as Optional from messages where SenderId = 1 or ReceiverId=1 order by Optional, DateAndTime desc;
假設Logged UserID為1,請改用占位符。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.