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