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

如何基于字符串列排序记录,循环从各字符串类别依次取一条展示

SQL轮询分组排序实现方案

核心逻辑

你需要的是按F2分组轮询输出的效果,实现逻辑分为两步:

  1. 给每个F2分类下的记录,按你需要的组内顺序(示例中是按Id升序)分配组内行号
  2. 排序时优先按组内行号升序,再按F2值升序,就能实现先取所有分类第一条、再取所有分类第二条的效果

主流数据库实现(支持窗口函数:MySQL8.0+、PostgreSQL、SQL Server、Oracle等)

直接用ROW_NUMBER()窗口函数生成分组行号,再排序即可:

SELECT Id, F1, F2
FROM (
    SELECT 
        Id, F1, F2,
        -- 按F2分组,组内按Id升序编行号
        ROW_NUMBER() OVER (PARTITION BY F2 ORDER BY Id ASC) AS group_row_num
    FROM 你的表名
) t
-- 先按组内行号排序,同一行号的按F2排序
ORDER BY group_row_num ASC, F2 ASC;

执行后输出结果和你期望的完全一致。


MySQL 5.x 兼容实现(不支持窗口函数)

可以用用户变量模拟分组行号的生成:

SELECT Id, F1, F2
FROM (
    SELECT 
        Id, F1, F2,
        @row_num := IF(@current_f2 = F2, @row_num + 1, 1) AS group_row_num,
        @current_f2 := F2
    FROM 你的表名,
         (SELECT @row_num := 0, @current_f2 := '') AS init
    ORDER BY F2 ASC, Id ASC
) t
ORDER BY group_row_num ASC, F2 ASC;

内容的提问来源于stack exchange,提问作者Syed Saqlain

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 19:09:04