2014-02-06 67 views
0

这里是我的示例表(假设我遇到3类只):MySQL查询 - 查询计数值

id user item category 
---------------------------- 
1 myuser item1 1 
2 myuser item2 2 
3 myuser item3 2 
4 myuser item4 2 
5 myuser item5 2 
6 myuser item6 3 

我试图做这总结的类别,为了得到这个结果查询:

user cat_1 cat_2 cat_3 
-------------------------------- 
myuser 1  4  1 

什么是最好的方法? 感谢

编辑:扩展方式(对不起我的错)

我的表如下:

id user item category total 
------------------------------------ 
1 myuser item1 1   2 
2 myuser item2 2   6 
3 myuser item3 3   4 

我如何可以查询得到这个结果:

user cat_1 cat_2 cat_3 
-------------------------------- 
myuser 2  6  4 

回答

3

如果您确定只有3种类别可以使用:

select 
    user, 
    sum(if(category=1,1,0)) cat_1, 
    sum(if(category=2,1,0)) cat_2, 
    sum(if(category=3,1,0)) cat_3 
from table 
group by user 
+0

真棒 - 正是我需要的 - 谢谢! – Fuxi

+0

干净的解决方案,但我有一些编辑。 –

+0

基督徒,抱歉再次打扰你,我有一个错误在我的任务,我需要显示总数而不是..:/ 我认为修改后的语法应该是: sum(if(category = 1,total,0) )作为cat_1? – Fuxi