我有一个简单的表 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/