Получить количество ссылок каждого пользователя в одной таблице в одном запросе

0

У меня есть следующая таблица:

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

Когда пользователь имеет 0 в реферальных столбцах, это означает, что он не нажал на какую-либо реферальную ссылку. Если у него есть номер, он ссылается на идентификатор другого пользователя.

Итак, теперь я просто хочу получить такой вывод:

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

Есть ли способ получить этот вид вывода только с одним запросом mysql? Я пробовал много чего, но я застреваю.

Теги:
mariadb

2 ответа

1
Лучший ответ

Один простой метод использует коррелированный подзапрос:

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

Вы также можете сделать это с помощью 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 

Ещё вопросы

Сообщество Overcoder
Наверх
Меню