我在以下查询中遇到了冲突:
SELECT COUNT(*) AS poststotal FROM posts GROUP BY category
以下查询返回包含类别数的帖子,而不是按类别分组的总帖子数。
所以:
TABLE: posts(title,category)
----------------------------
foo1 | art
foo2 | politic
foo2 | politic
foo3 | fun
将返回:
4
而不是:
3 posts
如何处理?
答案 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
( 很容易,我想我很想念你的问题......但我会试一试)