在一个查询中获取同一表中每个用户的引用计数

mrphzbgm  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(343)

我有下表:

| Id | referral |    
|----|----------|    
|  1 |        0 |    
|  2 |        0 |    
|  3 |        1 |    
|  4 |        2 |    
|  5 |        1 |

当用户的“引用”列中有0时,表示他没有单击任何引用链接。如果它有一个数字,它指的是另一个用户的id。
所以现在我只想要这种输出:

| Id | referral | referred_count |    
|----|----------|----------------|
|  1 |        0 |              2 |  
|  2 |        0 |              1 |    
|  3 |        1 |              0 |    
|  4 |        2 |              0 |    
|  5 |        1 |              0 |

有没有办法只用一个mysql查询就得到这种输出?我试过很多东西,但都卡住了。

siv3szwd

siv3szwd1#

一个简单的方法使用相关子查询:

select t.*,
       (select count(*) from t t2 where t2.referral = t.id) as referred_count
from t;
omtl5h9j

omtl5h9j2#

你也可以用一个 JOIN 表的自身:

select r1.id, r1.referral, count(r2.referral) AS referred_count
from ref r1
left join ref r2 on r2.referral = r1.id
group by r1.id

输出:

id    referral    referred_count
1     0           2 
2     0           1 
3     1           0 
4     2           0 
5     1           0

相关问题