簡體   English   中英

mysql排序發送和接收的消息

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

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