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