我有一个简单的SQL查询:
SELECT tid,
COUNT(*) AS bpn
FROM mark_list
WHERE userid = $userid
GROUP BY tid
现在,列tid
基本上是与每个条目关联的类别列表。类别是唯一的数值。
我想要做的是根据userid
总计一下有多少条记录,但我只想计算整个类别一次(这意味着如果类别3有10000条记录,它应该只得到1)。
需要注意的是,有时类别被列为null或有时为0.如果项目有0或null,则它没有类别,我希望它们被视为自己独立的实体,而不是集中在一个大类。
答案 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子句),然后运行单独的查询,仅考虑这些值。
可能有一种方法可以将它合并到一个查询中,但这种方式也应该有用。