2012-04-12 9 views
0

私はテーブルから20の最も人気のある場所を取得し、アルファベット順に並べ替えるためのクエリを持っています。これを行うには、よりクリーンな、またはより効率的な方法があるのだろうか?mysql order by with

SELECT 
    city 
FROM (
    SELECT 
    city, 
    count(*) AS cnt 
    FROM locations 
    GROUP BY city 
    ORDER BY cnt DESC 
    LIMIT 20 
) s ORDER BY city; 
+4

私にはかなり良く見えます – Phil

+0

それが最も効率的な方法であるかどうかわからなかったかもしれないので、私は尋ねたかったですか? – Jeff

+0

@Lion実際には、彼は未使用のフィールドを取得しています。とにかく改善の大したことは... –

答えて

3

少しクリーナー:

SELECT city FROM (
    SELECT city FROM locations 
    GROUP BY city 
    ORDER BY count(*) DESC 
    LIMIT 20 
) s ORDER BY city 

あなたはそれを使用するつもりはない場合count(*)を取得する必要はありません。