Mysql 用于邮件收件箱的SQL

Mysql 用于邮件收件箱的SQL,mysql,sql,greatest-n-per-group,Mysql,Sql,Greatest N Per Group,我有一个收件箱,里面有我的用户的消息,我有一个“消息”表和一个“用户”表。Messages表具有包含用户ID的至和自字段 我想选择来自每个用户的最新消息,其中to字段是当前用户ID,即 从(唯一用户)中选择(最新消息,按Message.ID),其中Message.to=$currentUserID(和左加入用户,其中UserID=Message.from) 我想以这样的方式结束: 我想不出我需要的查询,请帮助 试试这个。它经过测试,工作正常。已更新以包含有关发件人的信息 SELECT * FR

我有一个收件箱,里面有我的用户的消息,我有一个“消息”表和一个“用户”表。Messages表具有包含用户ID的
字段

我想选择来自每个用户的最新消息,其中
to
字段是当前用户ID,即

从(唯一用户)中选择(最新消息,按Message.ID),其中Message.to=$currentUserID(和左加入用户,其中UserID=Message.from)

我想以这样的方式结束:


我想不出我需要的查询,请帮助

试试这个。它经过测试,工作正常。已更新以包含有关发件人的信息

SELECT * FROM `messages` tm LEFT JOIN `users` tu ON `tm.from` = `tu.userid`
WHERE `tm.date` IN
    (SELECT MAX(`date`) FROM `messages` WHERE `to` = $currentUserID GROUP BY `from`);

这是SQL中的一个经典问题,称为“每组最大n”。你的例子是最简单的例子,是“按组排列的最大1”。阅读并查看您是否能解决问题,如果不能,发布您的问题,我们将提供帮助。有趣的是,谢谢@Konerak我会看看我能做些什么:\n据我所知,我已经做了
选择消息。*从消息t1开始,在t1.FROM=t2.id和((t1.“Date”我没有比较两个有日期等的表?这看起来是迄今为止最接近的!让我试试……那太棒了:D谢谢,伙计,我把“日期”改成了ID,因为ID永远是最新的。我将如何调整它以包括用户信息,其中message.from=User.id?我已经更新了answerMagic。谢谢你的帮助,你是60岁左右的人中唯一一个理解并成功做到这一点的人。这不是一件好事,因为它应该由人或人分组。用户刚刚向特定用户发送消息的图像。那么会发生什么呢?因此,您必须检查
来自哪里
=$currentUserID