繁体   English   中英

MySQL:使用 JOIN 从同一个表中提取总推荐用户数

[英]MySQL: Extract total Number of Referred users from same table using JOIN

我有一个与从 table1 获取所有数据以及来自每个记录/用户的推荐用户总数相关的查询。

我有一张名为table1 的表。

表:表1

id    name      code    refer_from_code
1     Name1     R1      0
2     Name2     R2      R4
3     Name3     R3      R2
4     Name4     R4      R4
5     Name5     R5      R2
6     Name6     R6      R1
7     Name7     R7      R6

代码是注册时分配给该用户的代码。 refer_from_code表示该人从哪个用户注册自己。 0表示不代表某人注册。

题:

我想从 table1 中提取所有记录,但还想获得关于refer_from_code 的针对每个用户的推荐总数。

预期结果:

id    name      total_referred
1     Name1     1
2     Name2     2
3     Name3     0
4     Name4     2
5     Name5     0
6     Name6     1
7     Name7     0

我现在所做的:

我已经为执行此任务编写了以下查询,但它没有按预期工作。

SELECT table1.id, table1.name, table1.COUNT(*) AS total_referred 
FROM table1 
JOIN table1 ON (table1.code=table1.refer_from_code);

我想使用单个 MySQL 查询来做到这一点。

我相信您应该能够在这里使用GROUP BYLEFT JOIN

SELECT
    u.name,
    IFNULL(referrals.total_referred, 0) total_referrals
FROM users u
LEFT JOIN (
    SELECT
        ui.refer_from_code,
        COUNT(*) AS total_referred
    FROM users ui
    GROUP BY ui.refer_from_code
) AS referrals ON referrals.refer_from_code = u.code
ORDER BY total_referrals DESC

小提琴

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM