2015-07-13 33 views
0

我有一個表,其中有invite_codeinvited_by列。如何添加`select count`作爲列

我想選擇所有用戶以及該用戶邀​​請的用戶數量。這可以在一個查詢中完成嗎?

例如我有這些數據:

id | invite_code | invited_by 
-----------------------------  
1 |   11 | 
2 |   22 |  11 
3 |   33 |  11 
4 |   44 |  22 

我想一個select count(*) from users where u.invite_code = invited_by添加到結果:

id | invite_code | invited_by | invite_num 
------------------------------------------ 
1 |   11 |   |   2 
2 |   22 |   11 |   1 
3 |   33 |   11 |   0 
4 |   44 |   22 |   0 

我使用MySQL的

回答

1

試試這個:

SELECT [id] 
     ,[InvCode] 
     ,[InvBy], (select count(*) from table t where t.[InvBy]=t1.[InvCode]) 
    FROM table t1 
+0

這個工作,謝謝! – leetom

+0

當然:)高興地幫助,如果你可以標記我的帖子作爲答案,它將是偉大的^^(點擊V) – Shaiba7

0

你可以也可以使用連接而不是列列表中的子查詢:

select u1.id, u1.invite_code, u1.invited_by, u2.invite_num 
from users u1 
left join (select invited_by, count(*) as invite_num from users group by invited_by) u2 
    on u1.invite_code = u2.invited_by; 
0

最有效的方式做到這一點是與自聯接:

select u.id, u.invite_code, u.invited_by, count(u2.id) as invite_num 
from user u 
left outer join user u2 on u2.invited_by = u.invite_code 
group by u.id, u.invite_code, u.invited_by 
+0

這是我等待在設置答案之前。謝謝! – leetom