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

SQL查询问题:如何获取Group ID后续编号记录的对应Text Desc

问题描述

现有数据表如下:

Group ID    Group No    Text Desc 
123A45      081         Subscriber 
123A46      083         Provider
123C48      081         Consumer
123B76      054         Worker
123B77      066         Player

需求:

  • 若某条记录的Group ID存在后续编号(如123A45对应后续123A46,123B76对应后续123B77),则将后续编号对应的Text Desc赋值给当前记录的Text Desc
  • 期望查询结果:
Group ID  Group No   Text Desc 
123A45       081      Provider
123B76       054      Player

此前尝试用Max条件查询未得到预期结果,需可行SQL方案。

解决方案

方案1:自连接关联后续记录

通过字符串函数拆分Group ID的前缀与数字部分,生成后续编号后与原表自连接,直接获取后续记录的Text Desc。

MySQL 版本:

SELECT 
    t1.`Group ID`,
    t1.`Group No`,
    t2.`Text Desc`
FROM 
    your_table t1
JOIN 
    your_table t2 ON 
        CONCAT(LEFT(t1.`Group ID`, LENGTH(t1.`Group ID`) - 2), 
               LPAD(CAST(RIGHT(t1.`Group ID`, 2) AS UNSIGNED) + 1, 2, '0')) = t2.`Group ID`;

SQL Server 版本:

SELECT 
    t1.[Group ID],
    t1.[Group No],
    t2.[Text Desc]
FROM 
    your_table t1
JOIN 
    your_table t2 ON 
        CONCAT(LEFT(t1.[Group ID], LEN(t1.[Group ID]) - 2), 
               RIGHT('00' + CAST(CAST(RIGHT(t1.[Group ID], 2) AS INT) + 1 AS VARCHAR(2)), 2)) = t2.[Group ID];

方案2:窗口函数 LEAD

利用LEAD窗口函数,按Group ID的前缀分组、数字部分排序,直接获取下一条记录的Text Desc,再筛选出存在后续记录的行。

MySQL 版本:

SELECT 
    `Group ID`,
    `Group No`,
    next_text_desc AS `Text Desc`
FROM (
    SELECT 
        *,
        LEAD(`Text Desc`) OVER (
            PARTITION BY LEFT(`Group ID`, LENGTH(`Group ID`) - 2) 
            ORDER BY CAST(RIGHT(`Group ID`, 2) AS UNSIGNED)
        ) AS next_text_desc
    FROM your_table
) t
WHERE next_text_desc IS NOT NULL;

SQL Server 版本:

SELECT 
    [Group ID],
    [Group No],
    next_text_desc AS [Text Desc]
FROM (
    SELECT 
        *,
        LEAD([Text Desc]) OVER (
            PARTITION BY LEFT([Group ID], LEN([Group ID]) - 2) 
            ORDER BY CAST(RIGHT([Group ID], 2) AS INT)
        ) AS next_text_desc
    FROM your_table
) t
WHERE next_text_desc IS NOT NULL;

说明

两种方案的核心都是识别Group ID的后续编号关联关系:

  • 自连接方案逻辑直观,适合需要明确关联规则的场景
  • LEAD窗口函数方案代码更简洁,适合按顺序取后续记录的场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 17:45:45