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

SQL实现:为数据表重复行添加标识,首行及唯一行标1其余标0

实现重复行标记FLAG的SQL方案

嘿,这个需求用窗口函数完全能搞定,你提到的row_number()思路非常准确,我来给你具体实现方案:

原始数据

COL1 COL2
A    X
A    Y
A    Z
B    W
B    W
C    L
C    L

实现逻辑与SQL代码

我们可以通过ROW_NUMBER()窗口函数按COL1和COL2的组合分组,给每组内的行生成序号,再通过CASE语句判断序号是否为1来标记FLAG:

SELECT 
    COL1,
    COL2,
    CASE 
        WHEN ROW_NUMBER() OVER(PARTITION BY COL1, COL2 ORDER BY (SELECT NULL)) = 1 THEN 1
        ELSE 0
    END AS FLAG
FROM your_table_name;

代码解释:

  • PARTITION BY COL1, COL2:将数据按COL1和COL2的唯一组合分组,每个组合就是一个独立的窗口
  • ROW_NUMBER() OVER(...):在每个分组内生成从1开始的连续行号
  • ORDER BY (SELECT NULL):如果不需要指定特定的排序规则(只要标记首次出现的行即可),用这个可以避免部分数据库要求必须指定排序字段的问题(如果你的数据库支持窗口函数不写ORDER BY,也可以省略这部分)
  • CASE语句:判断行号是否为1,是则返回1(唯一行或首次出现的重复行),否则返回0(非首次出现的重复行)

预期输出

COL1COL2FLAG说明
AX1唯一行
AY1唯一行
AZ1唯一行
BW1重复组合首次出现
BW0重复组合非首次出现
CL1重复组合首次出现
CL0重复组合非首次出现

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:09:02