按用户对mysql结果进行分组


Group mysql results by user

我想创建一个页面,列出当前用户发送的所有消息以及其他成员发送给当前用户的所有消息,按用户分组结果并显示他们的最后一条消息(类似于短信列表):

Mysql表:

users表:id、名称、密码消息表:id、messageSentedBy、messageSented To、messageData

我尝试过的查询(返回重复消息):

select
    users.*,messages.*
from
    messages
left join users on user.name=messages.messageSentedBy
    or user.name=messages.messageSentedTo
where
    messages.messageSentedBy = current user name or
    messages.messageSentedTo = current user name

我想你想要这个

select m.*
from messages m
where 
    (m.sentBy = current user id
     or m.sentTo = current user id)
and not exists (
select 1 
    from messages m2 
    where m2.id > m.id 
    and m2.sentBy = m.sentBy 
    and m2.sentTo=m.sentTo))
order by user.name

这是假设消息id是最近消息的度量(最好有一个带时间戳的列)。

考虑使用user.id作为外键,而不是user.name.