gpt4 book ai didi

Mysql - 对所有用户运行用户查询

转载 作者:行者123 更新时间:2023-11-29 10:01:28 25 4
gpt4 key购买 nike

我有一个用户特定的查询,需要为所有用户运行。

我正在努力思考如何用引用替换硬编码的 uuid,或者是否需要完全不同的方法?

select max(MaxDate), users.created_at
from (
select max(`moment`.`created_at`) as MaxDate
from `moment`
where `moment`.`user_uuid` = "7dd668af-241a-4176-a1da-f5689214b206"
union (
select max(`module`.`updated_at`) as MaxDate
from `module`
where `module`.`user_uuid` = "7dd668af-241a-4176-a1da-f5689214b206"
)
) as stuff, `users`
where `users`.`uuid` = "7dd668af-241a-4176-a1da-f5689214b206"

最终目标是获取用户的创建日期和同一用户上次更新内容的日期,然后获取它们之间的平均时间。但对于所有用户而不是单个用户。

最佳答案

这是一个通用查询,它将报告所有用户,按用户排序:

SELECT
u.user_uuid,
GREATEST(COALESCE(t1.max_created_at, t2.max_updated_at),
COALESCE(t2.max_updated_at, t1.max_created_at)) AS max_date
FROM users u
LEFT JOIN
(
SELECT user_uuid, MAX(created_at) AS max_created_at
FROM moment
GROUP BY user_uuid
) t1
ON u.user_uuid = t1.user_uuid
LEFT JOIN
(
SELECT user_uuid, MAX(updated_at) AS max_updated_at
FROM module
GROUP BY user_uuid
) t2
ON u.user_uuid = t2.user_uuid
ORDER BY
u.user_uuid;

如果您想限制为单个用户,您仍然可以通过 WHERE 子句或针对一组用户的 WHERE IN 子句来实现。

请注意,您的数据库设计有点奇怪,因为您的用户信息分布在多个表中。我的回答假设通常每个用户都会出现在两个表中,但情况可能并非如此。

关于Mysql - 对所有用户运行用户查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52852365/

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