求mysql统计表内容问题解答

img


有表profession和表user,user表的profession_id对应profession的id

如何实现统计profession_id数量输出左下角这种方式?(快递员=0这个信息也要输出)


SELECT
    count( user.profession_id),
    profession.NAME 
FROM
    profession
    JOIN user ON user.profession_id = profession.id 
GROUP BY
    user.profession_id

根据profession_id分组,并count数量

SELECT
count( user.profession_id),
profession.NAME
FROM
profession
LEFT JOIN user ON user.profession_id = profession.id
GROUP BY

注意,用LEFT JOIN, 而不是JOIN

select a.name,
case
when b.profession_id is null then 0
else count()
end Count
from profession a
left join user b on a.id=b.profession_id
group by a.name;
你统计的是profession表的内容,所以先查profession表信息,在左连接user表的,根据名称分组统计,case判断一下,如果user表没有内容,即profession_id是空的,就为0,否则就是count(
)