伯爵&按冲突分组

时间:2011-01-01 22:06:07

标签: mysql

我在以下查询中遇到了冲突:

SELECT COUNT(*) AS poststotal FROM posts GROUP BY category

以下查询返回包含类别数的帖子,而不是按类别分组的总帖子数。

所以:

TABLE: posts(title,category)
----------------------------
foo1  |  art
foo2  |  politic
foo2  |  politic
foo3  |  fun

将返回:

 4

而不是:

3 posts

如何处理?

3 个答案:

答案 0 :(得分:3)

/* get count for each category */
SELECT category, COUNT(*) AS poststotal FROM posts GROUP BY category;

您的原始查询应返回3,可能是由列类别中存储的空格引起的,请尝试

/* verify */
select title, length(category) from posts;

/* ensure whitespace trimmed */
SELECT COUNT(*) AS poststotal FROM posts GROUP BY trim(category);
  嗯,谢谢,但我想得到所有帖子的总数,但每个类别只有一个帖子:)这些类别也完全修剪了

与你所描述的完全不同

select 
  *
from posts 
group by category

/* the above will return single posts for each category */

答案 1 :(得分:1)

我仍然不确定我是否100%理解你的问题,但那怎么样?

SELECT COUNT(*)
FROM poststotal
WHERE category IN
(
    SELECT category
    FROM poststotal
    GROUP BY category
    HAVING COUNT(*) > 0
)

答案 2 :(得分:0)

如果您不希望按类别对计数进行分组,请不要进行分组。这样做:

SELECT COUNT(*) AS poststotal FROM posts

很容易,我想我很想念你的问题......但我会试一试)

相关问题