2009-12-02 17 views

cevap

24
SELECT col, count(*) 
    FROM tablethingie 
    GROUP BY col 
    ORDER BY count(*) DESC 
    LIMIT 10 
+0

(silme için benim cevap İşaretli Aşağıdaki kodu deneyin: - Öyle mi saymak (col) yerine saymak (col) yerine saymak (*)? Hmm, ve daha verimli olan ... – Murph

+0

Tamam, sanırım mysql'i değiştiren ilk sizdiniz :-), böylece silinirim ve bunu oylarım. – Peter

+0

sayımı (col) null olmayan değerleri sayar. Col grup olduğumuz şey olduğu için, yine de aynı. sayım (*), saymaya (1) eşdeğerdir, ancak genellikle ikincisine göre önerilir. sayım (*), tam olarak ihtiyacınız olan her şeyden daha verimli olmalıdır. –

2

Dene:

SELECT ColName, Count(1) AS occurances 
    FROM 
     table 
    GROUP BY 
     ColName 
    ORDER BY 
     occurances DESC 
    LIMIT 
     10 
2

TOP olsa MSSQL olduğunu MySQL desteklenmeyen bir anahtar kelimedir.

Bu şu sorgu istediğini yapmalıdır (denenmemiş, ama fikir netleşecektir):

SELECT column, COUNT(*) AS matches 
FROM table 
GROUP BY column 
ORDER BY matches DESC 
LIMIT 10 
+0

Aşağı oylamaya karşı yukarı-oyla; Çünkü, söyleyebildiğim kadarıyla, cevabınız tüm diğerleri için eşit olarak geçerlidir. Aşağı-seçmenlerin oylarını * açıklayabilmelerini diliyorum. Bu şekilde bir şeyler öğrenebiliriz. –

+0

ricebowl, bunu açıklar mı? - http://stackoverflow.com/revisions/1831456/list - cevap downvoted sonra başkalarını taklit etmek için düzenlenmiş ;-) –

+0

Gerçekten de, çünkü cevabımda bir hata gördüm, ben de düzeltdim. Bu şekilde, doğru cevaplar verilmiyor ve çalışmayan değil. Bir soruya verilen cevapların kalitesini yüksek tutmak. – Ben

4

SELECT colname, COUNT(*) AS cnt 
FROM tablename 
GROUP BY colname 
ORDER BY cnt DESC 
LIMIT 10 
İlgili konular