2011-05-11 44 views
1

我有一个表中的项目负载。每个都有一个user_id。在一个SQL查询中选择COUNT(id)和总数

我想知道每个用户的物品数量以及物品的总数量。

如果我这样做:

SELECT COUNT(id) 
FROM items 
GROUP BY user_id 

...我得到每个用户的项目数,但我不能得到物品的总数,因为他们进行分组。

可以做到这一点吗?

如果是这样,这是一种很好的做事方式吗?

在选择它们之后,我会更好地总结计数吗?

回答

3

以下查询将为您提供额外的行,其中包含项目总数s和user_id = NULL。

SELECT user_id, COUNT(id) n_items 
FROM items 
GROUP BY user_id WITH ROLLUP 

又见Mysql docs on GROUP BY modifiers

+0

完美!我从来没有猜到... –

+0

它也花了我一天的谷歌搜索和阅读当时找出...我不知道stackoveflow :) –

1

这样的事情......?

SELECT COUNT(*) 
FROM items 
UNION 
SELECT COUNT(id) 
FROM items 
GROUP BY user_id 

然后第一个结果将是总数,后续结果将是分组总数。

但个人而言,我只是在做完group by查询之后再添加它们。