MySQL:首先按 PK 降序选择 10 个最新行,然后按字母顺序选择其余记录

标签 mysql

我有一个简单的表 USERS:

 id | name
----+------

你能帮我完成从表中获取所有行的查询吗:

a) 将 PK 值最高的 10 行按 id DESC 顺序放在顶部;

b) 按 name ASC 顺序放置所有剩余行。

谢谢!

最佳答案

这是一个有点棘手的问题。我将采用的方法是join 方法。使用联接确定第一组的主键(这很快,因为您正在使用主键)。然后使用与该表的匹配作为order by:

select t.*
from table t left outer join
     (select id
      from table t
      order by id desc
      limit 10
     ) t10
     on t.id = t10.id
order by t10.id desc,
         t.name asc;

关于MySQL:首先按 PK 降序选择 10 个最新行,然后按字母顺序选择其余记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21977593/

相关文章:

php - 如何在 ATTR_EMULATE_PREPARES 关闭时模拟 PDO 中的 DEFAULT 参数?

php - 从输入文本创建标签云的最佳方法

java - 从mysql数据库获取 map 标记到android应用程序

mysql - JOIN 上的子查询提取所有 ID/名称

php - 来自另一个数据库的 MySQL 子查询,其中表名取决于主查询

mysql - 如何提取Sql中某个范围内的数据

php - 使用 php 连接到数据库

MySQL:最后显示具有特定内容的行

MySQL Workbench - 改变数据库查询(本地连接数据库)

php - 从关联数组中回显特定数据?