gpt4 book ai didi

mysql - LEFT OUTER JOIN 获取 max() 并包含 NULL 值

转载 作者:行者123 更新时间:2023-11-29 02:21:35 29 4
gpt4 key购买 nike

我已经设法通过使用左外连接来获取数据并包含 NULL 值。这是我当前的查询:

select s.user, a.id, a.datetime as date, a.total_time 
from steam_accounts s
left outer join activity a on a.steam_id = s.id
where s.user_id = 1

这将返回:

enter image description here

这几乎是完美的。但现在我需要使用 max(a.id) 过滤结果,如果没有来自外部连接的匹配项,则包括空值。

这是我尝试过的:

select s.id, s.user, max(a.id), a.datetime as date, a.total_time
from steam_accounts s
left outer join activity a on a.steam_id = s.id
where s.user_id = "1"

结果:

enter image description here

所有空值都消失了。我只想过滤掉上一个查询的前两个结果。

这是我想要的结果:

enter image description here

非常感谢。谢谢

最佳答案

唉,MySQL 没有OUTER APPLYLATERAL JOIN,所以它的效率会比它本来应该的低。看起来像这样的东西应该产生你想要的东西:

SELECT
s.id
,s.user
,ActivityIDs.MaxActivityID
,activity.datetime as date
,activity.total_time
FROM
steam_accounts s
LEFT JOIN
(
SELECT
a.steam_id
,max(a.id) AS MaxActivityID
FROM activity a
GROUP BY a.steam_id
) AS ActivityIDs
ON ActivityIDs.steam_id = s.id
LEFT JOIN activity ON
activity.id = ActivityIDs.MaxActivityID
WHERE
s.user_id = 1

对于每个 steam_account,我们在第一个 LEFT JOIN 中找到一个具有最大 ID 的 activity。然后我们使用在第二个 LEFT JOIN 中找到的 ID 获取剩余的 activity 详细信息。

关于mysql - LEFT OUTER JOIN 获取 max() 并包含 NULL 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30953262/

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