Mysql 如何执行COUNT()或COUNT(*)

Mysql 如何执行COUNT()或COUNT(*),mysql,count,Mysql,Count,我在数据库中有一个标签列表 例: 我想获得一个按升序排列的标记名列表,以及唯一标记在数据库中出现的次数。我写了这段代码: 例: 这将产生正确的结果: hero , 1 spiderman , 1 superman , 2 villan , 1 如何获得整个列表的完整计数。在这种情况下,答案应该是4,因为自然有4行。如果语句不失败,我似乎无法获得正确的COUNT() 非常感谢你的帮助!:) 使用countdistinct(hashtag.tag\u name)——它不能

我在数据库中有一个标签列表

例:

我想获得一个按升序排列的标记名列表,以及唯一标记在数据库中出现的次数。我写了这段代码:

例:

这将产生正确的结果:

 hero      , 1
 spiderman , 1
 superman  , 2
 villan    , 1
如何获得整个列表的完整计数。在这种情况下,答案应该是4,因为自然有4行。如果语句不失败,我似乎无法获得正确的COUNT()


非常感谢你的帮助!:)

使用
countdistinct(hashtag.tag\u name)
——它不能与您拥有的
SELECT
相同(当然除了使用
UNION
),而是使用自己的
SELECT
(或适当的
UNION
)它将给出您想要的结果。

我不确定sql中的查询是否正确,但这一查询在oracle中运行良好

SELECT hashtag.tag_name, count(*) FROM hashtag GROUP BY cube(hashtag.tag_name)
要完全按照您所描述的方式进行操作(获取结果列表的完整计数),您需要对结果进行计数,如:

当然,
orderby
子句是不必要的,它会被外部聚合
COUNT
吞没,内部聚合
COUNT
也是如此

此外,正如一些人所指出的,实现这一点的捷径是一个
COUNT DISTINCT
,如:

SELECT COUNT(DISTINCT hashtag.tag_name)
FROM hashtag

这可能更有效地使用索引,也可能不更有效,这取决于它是否意识到它不必计算所有内容。有更多知识的人,请随时发表评论(或者试着解释一下)。

非常感谢你解决了这个问题,天哪,我知道这一点,我甚至没有想过。然后我会很感激你接受这个,让我成为3k+SF会员;-)我会的!还有,我觉得你很困惑;此升级投票根本不会改变您在SF上的代表:)
SELECT COUNT(DISTINCT `tag_name`) FROM `hashtag`
SELECT hashtag.tag_name, count(*) FROM hashtag GROUP BY cube(hashtag.tag_name)
SELECT COUNT(*) AS uniquetags
FROM (SELECT hashtag.tag_name, COUNT( * ) AS number
      FROM hashtag GROUP BY hashtag.tag_name
      ORDER BY hashtag.tag_name ASC)
SELECT COUNT(DISTINCT hashtag.tag_name)
FROM hashtag