1

好的,假设我有以下 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 个结果。我知道我可以简单地在后续代码中对返回的数组进行排序,但我想知道是否有办法在单个查询中执行此操作。

4

1 回答 1

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
于 2013-10-29T09:06:09.593 回答