第一种方法:

SELECT d.label AS name,d.value,
(SELECT count(1) FROM project.s_major_project p
  WHERE p.type = d.value) AS count
FROM westlake.z_dict d
where type='projectType'

第二种方法:  

select name,value , if(aa.id != '',count(aa.name),0) from ( SELECT d.label AS name ,d.value ,p.id as id
FROM westlake.z_dict d
left join project.s_major_project p
on d.value = p.type where d.type='projectType' ) aa
group by name order by value

第三种方法:

SELECT d.label AS name,d.value,IFNULL(c.counts,0) AS count
FROM westlake.z_dict d LEFT JOIN
(
SELECT p.type,count(*) counts FROM project.s_major_project p GROUP BY p.type
) c
ON c.type=d.value where d.type='projectType'

第四种方法:

SELECT d.label AS name,d.value,SUM(CASE WHEN p.type=d.value THEN 1 else 0 END) AS count
FROM westlake.z_dict d LEFT JOIN project.s_major_project p
ON p.type = d.value WHERE d.type='projectType' GROUP BY d.value;

 

 posted on 2017-07-17 16:51  张随笔  阅读(317)  评论(0编辑  收藏  举报