mysql - 在一次查询中获取同一张表中每个用户的推荐计数

标签 mysql sql mariadb

我有下表:

| 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 查询来获得这种输出?我尝试了很多东西,但我陷入困境。

最佳答案

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

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

关于mysql - 在一次查询中获取同一张表中每个用户的推荐计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51604092/

相关文章:

mysql - 获取 QA 表中线程的最新行

sql - 如何删除特定数据库特定时间的备份?我也不想给出文件的路径。有人可以指导我吗?

phpmyadmin 无法删除用户

mysql - MySQL/MariaDB查询在某些表条件下慢的可能原因

php - MySQL - 根据用户的选择选择列 'Name' 其中列 'id' 和 'parent' 中的行彼此相等

mysql - Laravel 查询生成器问题

java - 注册数据未发送到 mySQL 数据库

mysql - Like 和 '=' 等于 sql - mysql 集群中的操作符性能

php 日历在 2012 年 2 月之后转到 2013 年 3 月

php - 数据库不对数组数据集执行 INSERT