MYSQL:除了0和null之外的所有值的GROUP BY?

时间:2011-07-13 22:43:40

标签: php mysql

我有一个简单的SQL查询:

  SELECT tid, 
         COUNT(*) AS bpn
    FROM mark_list 
   WHERE userid = $userid 
GROUP BY tid

现在,列tid基本上是与每个条目关联的类别列表。类别是唯一的数值。

我想要做的是根据userid总计一下有多少条记录,但我只想计算整个类别一次(这意味着如果类别3有10000条记录,它应该只得到1)。

需要注意的是,有时类别被列为null或有时为0.如果项目有0或null,则它没有类别,我希望它们被视为自己独立的实体,而不是集中在一个大类。

2 个答案:

答案 0 :(得分:3)

Wheeee!

SELECT SUM(`tid` IS NULL) AS `total_null`,
       SUM(`tid` = 0) AS `total_zero`, 
       COUNT(DISTINCT `tid`) AS `other`
  FROM `mark_list`
 WHERE `user_id` = $userid

编辑:请注意,如果total_zero大于0,则必须从“其他”结果中减去一个(因为tid = 0将在该列中计算)

答案 1 :(得分:2)

您可以将查询更改为不考虑这些特定值(通过WHERE子句),然后运行单独的查询,仅考虑这些值。

可能有一种方法可以将它合并到一个查询中,但这种方式也应该有用。