MySQL sayısı 2'den büyük


96

Aşağıdaki tablo yapısına sahibim

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

Tablo, belirli bir metnin daha düşük durumundaki sözcüklerle doldurulur, dolayısıyla metin

Merhaba hoşçakal merhaba

sonuçlanır

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

Tabloda en az iki kez tekrarlanan kelimelerin sayısını döndürecek bir SELECT sorgusu yapmak istiyorum (merhaba gibi)

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

Tabi ki bu çok yanlış ve masa büyük olduğunda süper aşırı yükleme. Böyle bir amaca nasıl ulaşılacağına dair bir fikrin var mı? Yukarıda verilen örnekte, 1


Alt çizgileri "sarkan" bir halat köprü gibi gören başka kimse var mı?
damlacık

Yanıtlar:


236

Birden fazla geçen kelimelerin ve ne sıklıkta geçtiğinin bir listesini almak için GROUP BY ve HAVING kombinasyonunu kullanın:

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

Yukarıdaki sonuç kümesindeki kelimelerin sayısını bulmak için, bunu bir alt sorgu olarak kullanın ve bir dış sorgudaki satırları sayın:

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

1
Sadece bir eklenti, takma adı "sahip olmakta" da kullanabilirsiniz. SEÇİLEN kelimeler gibi, Cnt> 1 OLAN kelimelere GÖRE GRUPLA kelimelerden cnt OLARAK COUNT (*)
Vaibhav Jain

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

CodeIgniter ayrıca sahip olmayı da destekler, bu yüzden bu mükemmeldi. Teşekkürler
Jun Bae Kazandı

7

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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.