gpt4 book ai didi

mysql - 将一个表连接到另一个表的 MAX 记录

转载 作者:行者123 更新时间:2023-11-29 12:57:45 24 4
gpt4 key购买 nike

假设我有一个用于在线论坛的 MySQL 数据库,其中包含两个表:

topic : id, ...
message : id, id_topic, created, ...

如您所料,一个主题可能有许多(或没有)消息

我想获取每个主题记录的列表,该记录左连接到其最近创建的消息记录(或连接如果没有消息,则什么也不做)。我需要结果中两条记录的所有字段。

我一直在做的是使用子查询来创建所有最近创建的消息的表,然后将其连接到主题表。然而,当主题表有几千行而消息表有几十万行时,它真的会陷入困境。

着眼于性能,解决此问题的正确方法是什么?

最佳答案

试试这个:

 SELECT t.*, m.*
FROM topic t
LEFT JOIN
(SELECT id_topic, MAX(created) AS created
FROM message
GROUP BY id_topic
) T2 ON t.id = T2.id_topic
LEFT JOIN message m ON m.id_topic = T2.id_topic AND m.created = T2.created

说明:

首先,我们将表主题与为每个 id_topic 创建的最大数量的临时表连接起来。然后表消息与同一个临时表连接。然后从两个表中获取结果。

关于mysql - 将一个表连接到另一个表的 MAX 记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23776821/

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