基本上我有一个表名称 myTable ,里面有 Name,Class ,我想像下表一样对它们进行排序,其中包含每个名称的计数以及它们拥有的 1,2,3 的数量。下面是我的代码目前有,但它适用于少量条目,如果表有 20,000 行,则需要很长时间才能执行。
Select DISTINT(Name),
(Select count(*) from `myTable` d1 where d1.Name = dd.Name and Class=1),
(Select count(*) from `myTable` d2 where d2.Name = dd.Name and Class=2),
(Select count(*) from `myTable` d3 where d3.Name = dd.Name and Class=3)
from `myTable` dd
Order by Name;
最佳答案
这是经典的条件聚合:
Select Name,
sum(case when Class = 1 then 1 else 0 end),
sum(case when Class = 2 then 1 else 0 end),
sum(case when Class = 3 then 1 else 0 end)
from myTable
group by Name
关于mySQL高效统计表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31020794/