Aynı ID'ye ait tekrar eden kayıtları listelemek MySQL
id, user_id, comments şeklinde bir tablo olduğu senaryoda;
"user_id" özelinde bir sıralama yapmak istiyorum.
Örnek: 15 ID'li kullanıcı 85 tane yorum yapmış,
44 ID'li kullınıcı 47 tane yapmış... gibi, en çok yorum atan (en çok tekrar eden user_id'den, aşağıya doğru bir sıralama yapmak) istiyorum, nasıl yapılabilir?
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (1)
SELECT id, user_id, COUNT(comments) as commentsCount
FROM tablo
GROUP BY user_id
ORDER BY commentsCount
LIMIT 1000
gibi bir sorgu işinize yarayabilir.
Pek ihtiyacım olmadığından pek de iyi bilmediğim GROUP BY kullanımına şu siteden baktım:
https://www.tasarimkodlama.com/veritabani/mysql/mysql-group-by-kullanimi/
Sitedeki MySQL GROUP BY Toplam (Aggregate) Fonksiyonlar ile Kullanımı başlığı altındaki Örnek Sorgu 2 örneğini baz aldım:
Örnek Sorgu 2 Yukarıdaki örnekte siniflara göre gruplama yaptık. Şimdi hangi sınıfta kaç öğrenci var ona bakalım. (Gruplar içinde saymak için COUNT aggregate fonksiyonu kullanılır.)
SELECT sinif, COUNT(*) as 'Mevcut'
FROM ogrenci
GROUP BY sinif
Örneği şu şekilde sonuç vermiş:
[
{ sinif: "10A", Mevcut: 15 },
{ sinif: "10B", Mevcut: 13 },
{ sinif: "10C", Mevcut: 12 },
{ sinif: "11A", Mevcut: 17 },
{ sinif: "9A", Mevcut: 14 },
{ sinif: "9B", Mevcut: 16 },
{ sinif: "9C", Mevcut: 13 },
]