我有一列有15个不同的值。我想重新计算其中有几个的数量, 我想出了例如如何计算表中的特定值
select a,COUNT(IFNULL(b != 1,NULL)),COUNT(IFNULL(b != 2,NULL)) from
mytable group by a
select a,SUM(CASE WHEN a = 1 THEN 1 ELSE 0)),SUM(CASE WHEN a = 2 THEN 1 ELSE 0)) from
mytable group by a
这样做的最好方法是什么? (注意,我需要将这些值转换为列, 简单地从mytable中选择a,b,count(*),其中b = 1或b = 2 group by a,b;不会这样做。)
如果您在单独的列中需要它们,那么您的查询看起来效果与它将得到的一样有效。 – Wrikken 2010-10-12 08:55:07
'IFNULL(expr,NULL)'是毫无意义的。它总是等同于'expr'。 – 2010-10-12 08:57:24
另外'CASE当a = 1则1 ELSE 0'相当于'a = 1'。 – 2010-10-12 08:58:39