如何调整新闻表SQL查询排序:最大ID记录优先,其余按ID升序
解决方案
你可以通过在ORDER BY子句中添加条件排序优先级来实现这个需求,具体的SQL语句如下:
SELECT * FROM news ORDER BY -- 让最大ID的记录排在最前面(优先级0),其余记录优先级为1 CASE WHEN id = (SELECT MAX(id) FROM news) THEN 0 ELSE 1 END ASC, -- 其余记录按ID升序排列 id ASC;
原理说明
- 第一个排序条件用
CASE语句判断当前记录的ID是否等于表中的最大ID:如果是,就标记为0,否则标记为1。因为是ASC升序排序,0会排在1前面,这样最大ID的记录就会始终处于首位。 - 第二个排序条件是
id ASC,确保除了最大ID之外的所有记录按照ID从小到大排列,正好匹配你需要的1、2、3这样的顺序。
如果后续业务需要在非最大ID的记录里保留原有的sort字段排序逻辑,只需把第二个排序条件改成sort ASC即可,灵活度很高。
内容的提问来源于stack exchange,提问作者John K
相关产品推荐
相关产品推荐

