我想检索当前用户和其他用户之间的最后一条消息,并将其显示在用户的消息页面中,就像facebook一样。我用这个

<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>


但是它将所有消息从一个用户发送到当前用户,并将当前用户的最后一条消息发送给该用户。
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>

最佳答案

您只需要删除子查询中接收方周围的引号,
假设每个消息都具有唯一的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
  )

关于mysql - 从SQL获取当前用户和其他人之间的最后一条消息,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40822246/

10-11 04:41
查看更多