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

如何在Oracle/SQL Developer中标记重复与唯一记录

Oracle 实现重复记录标记需求

源表数据

Name,Location
Ram,India
Ram,USA
Ram,Japan
Ram,India
Ram,UK

需求说明

新增原表不存在的Duplicate列:

  • 重复的(Name,Location)记录标记为'Y'
  • 唯一的(Name,Location)记录标记为'N'
    支持以下两种输出形式之一:

输出形式1(所有重复记录均标'Y')

Name,Location,Duplicate
Ram,India,Y
Ram,India,Y
Ram,Japan,N
Ram,UK,N
Ram,USA,N

输出形式2(每组重复记录仅首条标'N',其余标'Y')

Name,Location,Duplicate
Ram,India,N
Ram,India,Y
Ram,Japan,N
Ram,UK,N
Ram,USA,N

解决方案

方案1:生成输出形式1

使用窗口函数统计每组的记录数,大于1则标记为'Y':

SELECT
    Name,
    Location,
    CASE
        WHEN COUNT(*) OVER (PARTITION BY Name, Location) > 1 THEN 'Y'
        ELSE 'N'
    END AS Duplicate
FROM
    your_table_name  -- 替换为你的实际表名
ORDER BY
    Location, Name;

方案2:生成输出形式2

使用ROW_NUMBER()为每组内的记录编号,首条记录标'N',其余标'Y':

SELECT
    Name,
    Location,
    CASE
        WHEN ROW_NUMBER() OVER (PARTITION BY Name, Location ORDER BY NULL) = 1 THEN 'N'
        ELSE 'Y'
    END AS Duplicate
FROM
    your_table_name  -- 替换为你的实际表名
ORDER BY
    Location, Name;

注:ORDER BY NULL表示采用Oracle默认的记录顺序,若需要按特定列排序,可将NULL替换为目标列(如主键列)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 02:45:15