2013-10-29 23 views
1

好了,可以说我有以下MySQL查询:MySQL声明中的顺序不同于字段限制?

SELECT table1.*, COUNT(table2.link_id) AS count 
FROM table1 
    LEFT JOIN table2 on (table1.key = table2.link_id) 
GROUP BY table1.key 
ORDER BY table1.name ASC 
LIMIT 20 

简单吧?它返回table1信息,每行链接的次数为table2

但是,您会注意到它将结果行限制为20 ...并将结果行排序为table1.name。它所做的是按字母顺序返回排名前20位的结果。

我想知道是否有办法根据count降序排列前20位的结果;同时还按字母顺序获得剩余的20个结果。我知道我可以简单地在后续代码中对返回的数组进行排序,但是我想知道是否有方法在单个查询中执行此操作。

回答

1

使用子查询的限制,并在排序外选择

SELECT * FROM (SELECT table1.*, COUNT(table2.link_id) AS count 
FROM table1 
    LEFT JOIN table2 on (table1.key = table2.link_id) 
GROUP BY table1.key 
ORDER BY count DESC 
LIMIT 20) t 
ORDER BY name ASC