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

SQL查询结果表如何仅展示同值的首个值 其余同值位置留空

实现SQL查询同值列仅首行显示的方案

核心实现思路:判断同分组内的首行,首行返回原值,其余行返回空值即可实现需求,以下是不同场景的实现方案:

方案1:支持窗口函数的主流数据库(MySQL8.0+/PostgreSQL/SQL Server/Oracle等通用)

LAG函数写法(更简洁)

SELECT 
    Id,
    -- 对比当前行与上一行的Type值,相同则返回空,不同则返回当前Type
    CASE WHEN LAG(Type) OVER (ORDER BY Id) = Type THEN '' ELSE Type END AS Type
FROM 你的原查询结果集

ROW_NUMBER写法(兼容性更稳定)

SELECT 
    Id,
    -- 按Type分组,组内按Id排序,仅组内第一行返回Type值
    CASE WHEN ROW_NUMBER() OVER (PARTITION BY Type ORDER BY Id) = 1 THEN Type ELSE '' END AS Type
FROM 你的原查询结果集

方案2:不支持窗口函数的旧版本数据库(以MySQL5.x为例)

通过自定义变量实现:

SELECT Id, Type 
FROM (
    SELECT 
        t.Id,
        CASE WHEN @prev_type = t.Type THEN '' ELSE t.Type END AS Type,
        @prev_type := t.Type
    FROM (
        -- 替换为你原本的查询语句,必须保证结果按Id、Type有序
        SELECT Id, Type FROM 你的业务表 ORDER BY Id
    ) t,
    (SELECT @prev_type := '') AS init_vars
) AS final_result

注意事项

  • 所有方案的前提是你的查询结果已经按Id和Type有序排列,和示例的排序规则一致
  • 如果仅为前端/报表展示需求,更建议在应用层/报表工具中实现该逻辑,避免SQL层处理后影响Type列的后续聚合、过滤操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 15:39:04