【发布时间】:2021-05-11 00:26:07
【问题描述】:
我有两个表(消息和用户)
Messages 表有以下字段 {message, senderid, receiverid} 用户表有以下字段 {userid, name, email}
我想运行一个查询,以便仅获取发送给特定用户的最后一条消息。 这是查询
SELECT m.message, u.name, u.email
from users as u, messages as m
where m.sender = u.userid
and m.receiver = '1'
group by m.sender desc;
但是,这不会返回我想要的,因为它为每条发送的消息选择第一条消息,而不是最后一条消息。一个完美的解决方案应该是
SELECT m.message, u.name, u.email
from users as u, messages as m
where m.sender = u.userid
and m.receiver = '1'
order by m.sentdate desc
group by m.sender desc;
但我无法在 GROUP BY 之前使用 ORDER 以便从最后一条消息到第一条消息排序,然后按用户分组。
请帮忙
【问题讨论】:
-
您是否只希望每个发件人发给收件人的最后一条消息?
-
MySQL5.x 还是 MySQL8?后者有一种更便宜的方式来选择每个用户的最后一条消息。
-
mysql 5.7.我只想获取每个用户发送给特定用户的最后一条消息,而不仅仅是发送给用户的最后一条消息
-
是的@AndyLin 这正是我想要的。例如接收者的值为“1”
标签: mysql