假设我有三张桌子:
users
带有名称 IDemails
包含具有其电子邮件地址的行messages
包含包含其电子邮件日期和标题的行
当然,第二个和第三个表都可以使用用户 ID 与第一个表匹配。
我想要一个查询,它只返回每个用户一次,他们的电子邮件地址和他们最近消息的日期。
如果我使用这个:
SELECT name,email,title,date
FROM users
JOIN emails ON users.id = emails.user_id
JOIN messages ON messages.user_id = emails.user_id
group by name
order by date desc
我没有收到最新消息,因为排序是在加入和分组之后发生的。我每人收到一封来自我的用户的电子邮件,这些电子邮件按日期排序。
这可以一次完成吗?我错过了什么?
Pastebin 用于您可以使用的虚拟数据库:http: //pastebin.com/1x273aEe - 实际数据库与此不完全相同,但问题相同。