我想创建一个页面,列出当前用户发送的所有消息,以及其他成员发送给当前用户的所有消息,按用户对结果进行分组并显示他们的上一条消息(类似于短信列表):
Mysql表:
users table: id,name,password messages table: id,messageSentedBy,messageSentedTo,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
答案 0 :(得分:0)
我想你想要这个
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。