如何使用 SQL Server 在多个列中查找重复项

问题描述 投票:0回答:0

是否有可能以一种只需要匹配其中一列的方式在 SQL 表中跨多个列查找重复项?

例如,假设我有一个包含以下架构的表: 身份证、C1、C2

我的目标是返回一个新表,其中包含一个名为“组 ID”的列,该列是记录所在组的 ID。如果 C1 或 C2 中至少有一个匹配,则给定记录应该存在于组中。

例如,考虑这张表

创建表#Target

(ID Varchar(MAX),C1 Varchar(MAX),C2 Varchar(MAX))

插入#Target

价值观

('1','p1','e1'), ('2','p2','e2'), ('3','p1','e2'), ('4','p3','e3'), ('5','p3','e4'), ('6','p4','e4')

ID C1 C2
1 p1 e1
2 p2 e2
3 p1 e2
4 p3 e3
5 p3 e4
6 p4 e4

所需的输出看起来像

ID C1 C2 GID
1 p1 e1 G1
2 p2 e2 G1
3 p1 e2 G1
4 p3 e3 G2
5 p3 e4 G2
6 p4 e4 G2

在尝试提出解决方案时,我尝试像这样按每一列单独分组:

#1 按 C1 分组并为每个组分配唯一 ID (C1GID)

#2 按 C2 分组并为每个组分配唯一 ID (C2GID)

现在我遇到的问题是如何按 C1GID 或 C2GID 分组。我不知道如何对至少共享这些列值之一的行进行分组。

sql sql-server duplicates recursive-query sql-graph
© www.soinside.com 2019 - 2024. All rights reserved.