好吧,假设我有以下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个结果。我知道我可以简单地在后续代码中对返回的数组进行排序,但我想知道是否有办法在单个查询中执行此操作。
答案 0 :(得分:1)
使用subselect进行限制,并在外部选择中进行排序
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