2012-04-12 65 views
0

我有一个查询,我想从表格中获得20个最热门位置,然后按字母顺序排列。我想知道是否有更清洁或更有效的方法来做到这一点?mysql order by limit

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 2012-04-12 01:55:02

+0

也许因为我不确定它是否是最有效的方法,所以我想问? – Jeff 2012-04-12 02:04:33

+0

@Lion其实,他正在检索一个未使用的字段。反正没什么进步...... – 2012-04-12 02:10:54

回答

3

稍微干净:

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

你并不需要检索count(*)如果你不打算使用它。