gpt4 book ai didi

mysql - 如何连接 3 个表并从单个连接的结果中获取总和?

转载 作者:行者123 更新时间:2023-11-29 05:18:38 25 4
gpt4 key购买 nike


我有以下场景:
表:用户 : user_id, username ,...
表:登录:user_id, login_date, ...
表:积分:user_id、积分、积分时间
联接将基于 users.user_id 与其他表。
现在,我想计算所有登录次数以及用户获得的所有积分的总和。
现在,当我这样做时:

select users.user_id,count(*) from users
inner join login on users.user_id=login.user_id
group by users.user_id

它返回计数为 36(例如)。每当我运行时:

select users.user_id,count(*),sum(points) from users
inner join point on users.user_id=point.user_id
group by users.user_id

它返回总和为 400(例如)并计数为 2。

但是如果我结合这两个查询:

select users.user_id,count(*),sum(points) from users
inner join login on users.user_id=login.user_id
inner join point on users.user_id=point.user_id
group by users.user_id

它返回计数为 72 (36 * 2),总和为 800 (400 *2)。两次,因为存在多个用户 ID。
我尝试了几种方法,例如与 distincts 结合使用,但似乎没有任何效果。请帮忙。
如果可以单独连接就更好了。提前致谢。我在 Php 中使用 mysql。

最佳答案

您可以对子查询中的点求和并在计数中选择不同的登录

select users.user_id,l.login,p.points from users
inner join (select user_id, count(1) login from login
group by login) as l on users.user_id=login.user_id
inner join (select user_id, sum(point) as point
from point group by user_id ) as p on users.user_id=point.user_id

关于mysql - 如何连接 3 个表并从单个连接的结果中获取总和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29145971/

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