MySQL计数出现次数大于2


91

我有以下表格结构

+  id  +  word  +
+------+--------+

表格中填充了给定文本的下级大写字母,因此文本

哈by再见

会导致

+  id  +  word  +
+------+--------+
+   1  + hello  +
+------+--------+
+   2  + bye    +
+------+--------+
+   3  + hello  +
+------+--------+

我想进行一个SELECT查询,该查询将返回在表中至少重复两次的单词数(如hello)

SELECT COUNT(id) FROM words WHERE (SELECT COUNT(words.word))>1

这当然是错的,并且当表很大时会导致超级重载。关于如何实现这种目的有什么想法吗?在上面给出的示例中,我期望1


还有其他人看到下划线就像“下垂”的索桥吗?

Answers:


227

要获取出现一次以上的单词及其出现频率的列表,请结合使用GROUP BY和HAVING:

SELECT word, COUNT(*) AS cnt
FROM words
GROUP BY word
HAVING cnt > 1

要查找上述结果集中的单词数,请将其用作子查询并计算外部查询中的行数:

SELECT COUNT(*)
FROM
(
    SELECT NULL
    FROM words
    GROUP BY word
    HAVING COUNT(*) > 1
) T1

1
只是一个插件,您也可以在“具有”中使用别名。就像SELECT单词一样,COUNT(*)AS单词来自单词GROUP BY单词GROUP> 1
Vaibhav Jain'Jan

17
SELECT count(word) as count 
FROM words 
GROUP BY word
HAVING count >= 2;

CodeIgniter也支持具有,因此非常完美。谢谢
赢得君

6

SELECT word, COUNT(*) FROM words GROUP by word HAVING COUNT(*) > 1

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.