我有表“objects”:
id (int)
name (varchar)
group_id (varchar) default null
我做了一些插入:
insert into objects values
(null, 'Cat', null),
(null, 'Dog', null),
(null, 'Mouse', 'AAA'),
(null, 'Eagle', 'BBB'),
(null, 'Elephant', null),
(null, ' Bull', 'AAA');
我需要计算总行数。但是,group_id 为“AAA”的两行应合并为一行。 在上面的例子中,“count”应该返回“5”。这是因为:
- “group_id”字段有 3 行的值为 NULL
- group_id 为“BBB”的行“出现”了 1 次
- group_id 为“AAA”的行“出现”了 1 次
使用 group_id 进行计数似乎不是解决方案,因为它返回 3 行,并且对于每一行它都给出一个计数。我只需要总行数。
使用 DISTINCT 似乎也无济于事。查询:
select count(distinct(group_id)) from objects;
返回值为“2”的行
最佳答案
使用条件分组:
SELECT COUNT(*) FROM objects
GROUP BY CASE
WHEN group_id IS NULL THEN id
ELSE group_id
END
关于MySQL COUNT 与 group by 或 distinct,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33096413/