You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL如何选取指定索引多行并排序?如何获取第50-100名高分?

选取表中第50到100名高分的MySQL实现方法

核心实现语句

要选取第50到100名的高分,核心是通过ORDER BY排序后结合LIMIT子句实现分页。MySQL中LIMIT的偏移量从0开始计数,第50名对应的偏移量是49,需获取51条数据覆盖第50到100名,具体SQL如下:

SELECT ID, Score
FROM your_table_name
ORDER BY Score DESC
LIMIT 49, 51;
  • ORDER BY Score DESC:将数据按分数从高到低排序,确保高分在前
  • LIMIT 49, 51:跳过前49条数据(对应第1-49名),获取接下来的51条(对应第50-100名)

索引优化与USE INDEX的正确用法

如果你的USE INDEX语法未生效,大概率是索引创建或使用方式有误:

  1. 创建合适的降序索引
    为提升排序查询效率,建议在Score字段上创建降序索引;若想避免回表、进一步提升效率,可创建包含ID的联合覆盖索引:
    -- 仅针对Score的降序索引
    CREATE INDEX idx_score_desc ON your_table_name(Score DESC);
    
    -- 覆盖Score和ID的联合索引(推荐)
    CREATE INDEX idx_score_id_desc ON your_table_name(Score DESC, ID);
    
  2. 正确使用USE INDEX指定索引
    使用USE INDEX时需明确指定已创建的索引名称,示例:
    SELECT ID, Score
    FROM your_table_name USE INDEX (idx_score_id_desc)
    ORDER BY Score DESC
    LIMIT 49, 51;
    

处理同分情况

若存在多个用户分数相同的场景,为保证排名结果的稳定性,可在排序时增加ID作为次要排序条件:

SELECT ID, Score
FROM your_table_name
ORDER BY Score DESC, ID ASC
LIMIT 49, 51;

内容的提问来源于stack exchange,提问作者Henry Boyer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 07:00:58