gpt4 book ai didi

mysql - 我需要连接三个表,按一列对结果进行分组,并显示另一列的最大值

转载 作者:可可西里 更新时间:2023-11-01 07:35:32 25 4
gpt4 key购买 nike

假设我有三个表:

  • 用户 具有名称 ID
  • emails 包含具有电子邮件地址的行
  • 消息 包含包含电子邮件日期和标题的行

当然,第二个和第三个表都可以使用用户 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 -- 实际的数据库不完全是这样,但是还是一样的问题。

最佳答案

SELECT  a.*, b.*, c.*
FROM users a
INNER JOIN emails b
ON a.ID = b.user_ID
INNER JOIN messages c
ON a.ID = c.user_ID
INNER JOIN
(
SELECT user_id, MAX(date) maxDate
FROM messages
GROUP BY user_ID
) d ON c.user_ID = d.user_ID AND
c.date = d.maxDate

关于mysql - 我需要连接三个表,按一列对结果进行分组,并显示另一列的最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14116627/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com