日期:2014-05-18  浏览次数:20481 次

菜神提问?
主键ID       回复主题ID
1           0
2           0
3           1
4           2
5           1
6           1
有以上两个字段,第二列如果是0,前面的主键ID就是主题的编号.否如果是1,就是回复编号为1的主题,如果是2就是回复编号为2的主题.
怎么写查询语句能够得到:主题的总数,和回复各编号主题的总数.



------解决方案--------------------
select case when 回复主题ID =0 then 主键ID else 回复主题ID end as 主题目的编号,sum(case when 回复主题ID =0 then 1 else 0 end) as 主题总数,sum(case when 回复主题ID =0 then 0 else 1 end) as 回复总数
from tablename
group by case when 回复主题ID =0 then 主键ID else 回复主题ID end


------解决方案--------------------
case when 回复主题ID =0 then 主键ID else 回复主题ID end
也就是其他语言中的if else
if(回复主题ID =0)
主键ID;
else
回复主题ID