2009-12-02 7 views

答えて

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

を試してみてください(削除のために私の答えをフラグ付き - :それはですcount(col)ではなくcount(*)を使用することが可能ですか?もっと効率的です... – Murph

+0

あなたはmysqlを最初に変更したと思います:-)、私はこのように削除してこの1つを投票します。 – Peter

+0

count(col)はNULL以外の値を数えます。 colはグループ化されているので、とにかく同じです。 count(*)はcount(1)に相当しますが、一般にはcount(1)よりも推奨されます。カウント(*)は、あなたが必要とするものであれば、最も効率的です。 –

2

試してみてください。

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

TOPはそれがMSSQLであり、MySQLではサポートされていないキーワードです。

この次のクエリでは、あなたが欲しいものを行う必要があります(テストされていないが、アイデアが明らかになるはずです):

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

ダウン投票に対抗するためにアップ投票されました。なぜなら、私が言うことができる限り、あなたの答えは他のすべての人にも同じように有効であるからです。私はダウン投票者がダウン投票を説明することを望む。そうすれば何かを学ぶことができます。 –

+0

イネボウル、それはそれを説明するでしょうか? - http://stackoverflow.com/revisions/1831456/list - 回答は他人を模倣するように編集されました;-) –

+0

確かに、私は私の答えに誤りを見たので、私はそれを訂正しました。このように正しい答えが提供されていて、非機能ではありません。質問に対する回答の質を高く保つ。 – Ben

4

は、次のコード

SELECT colname, COUNT(*) AS cnt 
FROM tablename 
GROUP BY colname 
ORDER BY cnt DESC 
LIMIT 10 
関連する問題