如果你的下级的总数量不是那种: 下级及下级的下级及下级的下级的下级....的话这样写就可以了
SELECT
emp.username,
chc.count
FROM
tb_employee emp
,(
SELECT
pid,
count( 1 ) count
FROM
tb_employee
WHERE
pid IN ( SELECT id FROM tb_employee d WHERE pid = 1 )
GROUP BY
pid
) chc where emp.id = chc.pid
改成:
SELECT
emp.id,
emp.username,
IFNULL(chc.count,0)
FROM
tb_employee emp
LEFT JOIN (
SELECT
pid,
count( 1 ) count
FROM
tb_employee
WHERE
pid IN ( SELECT id FROM tb_employee d WHERE pid = 1 )
GROUP BY
pid
) chc ON emp.id = chc.pid
where emp.pid = 1
假设上级pid=N
select username,count(0) as count from table where pid in(select id from table where pid=N)