mysql - 受MySQL语句中不同于顺序的不同字段的限制?

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

最佳答案

使用subselect做limit,在外层select排序

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

关于mysql - 受MySQL语句中不同于顺序的不同字段的限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19653743/

相关文章:

mysql 查询无法在实时服务器上运行,但可以在本地服务器上运行

c# - FileStream 错误 - 进程无法访问文件...被另一个进程使用

mysql - 计算成员(member)期限,直到现在或直到结束日期

php - 转换为用户正确的时区

mysql - RMySQL 错误地查询类型为 bit 的列

mysql - 使用 LEFT OUTER JOIN 检查相关行不存在的最佳方法是什么

mysql - 转置表 Mysql

mysql - 同一个表 SQL Server 上的多个联接

mysql - cakephp 3 使用另一个表中的数据填充列表

mysql - 从字符串 ""到整数类型的转换无效