2016-11-26 23 views
0

我想要檢索當前用戶和其他用戶之間的最後一條消息,並將其顯示在用戶的消息頁面中,如Facebook的操作。我用這個從sql獲取當前用戶和其他人之間的最後一條消息

<pre> 
select * 
from ch_messages 
where receiver='$current_user_id' or sender='$current_user_id' && (least(sender, receiver), greatest(sender, receiver), f_msg_date)  
in 
(
    select 
     least(sender, receiver) as x, greatest(sender, receiver) as y, 
     max(f_msg_date) as date 
    from ch_messages 
    group by sender, receiver 
) 
</pre> 

,但它得到所有從用戶到當前用戶和當前用戶的最後一條消息給用戶messenges。 I want it like this image

這是我的表結構

<pre> 
mid => messages id 
sender => The sender of the message 
receiver => The receiver of the message 
msg => The message sent 
f_msg_date => date in which the message was sent 
</pre> 

回答

0

你只需要去除周圍的子查詢reciver和 報價假設每個消息有一個唯一的ID列(自動遞增),如果你想的最後一條消息

select * 
    from ch_messages 
    where receiver='$current_user_id' 
    or sender='$current_user_id' 
    AND (id, least(sender, receiver), greatest(sender, receiver), f_msg_date)  
    in 
    ( select 
      max(id) 
     , least(sender, receiver) 
     , greatest(sender, receiver), 
      max(f_msg_date) 
     from ch_messages 
     group by sender, receiver 
) 
+0

我有,但它顯示包括當前用戶的消息給他人的所有消息。但是我想要當前用戶的消息,如果它是最後一條消息,應該是@ClementSam的回覆 –

+0

。有更新答案希望是你需要或帶領你到正確的結果 – scaisEdge

+0

每個消息有一個唯一的ID。我已更新查詢,但它提供了一個錯誤。 –

相關問題