gpt4 book ai didi

sql - 自连接查询以查找重复记录

转载 作者:行者123 更新时间:2023-12-04 02:20:03 25 4
gpt4 key购买 nike

我有一个大约有 32 列的表,我想检查重复的行,但有两列是唯一的,因此每行的列都不相同。所以我需要 JOIN 条件基本上是 self 加入重复记录,其中除了两列之外所有列都相等。

最佳答案

要查找重复的行,查询将是(col1...col30 将排除每行始终唯一的两列)

SELECT
col1,
col2,
...,
col30
FROM
your_table
GROUP BY
col1,
col2,
...,
col30
HAVING
COUNT(*)>1

编辑:从您要删除重复行的备注中可以看出。假设您有每行唯一的列 id1 和 id2(即主键)和可以重复的列 col1..col4。以下面的脚本为例,删除重复行:

CREATE TABLE #tt(
id1 INT,
id2 INT,
col1 INT,
col2 INT,
col3 INT,
col4 INT,
PRIMARY KEY(id1,id2)
);

INSERT INTO #tt(id1,id2,col1,col2,col3,col4)
VALUES (1,1,1,1,1,1),
(1,2,1,1,1,1),
(1,3,1,1,1,1),
(2,1,1,1,1,1),
(3,1,2,2,2,2),
(4,1,2,2,2,2),
(2,2,2,2,2,2),
(3,3,3,3,3,3),
(4,2,3,3,3,3);

DELETE
t
FROM
#tt AS t
INNER JOIN (
SELECT
id1,
id2,
ROW_NUMBER() OVER (PARTITION BY col1,col2,col3,col4 ORDER BY id1,id2) AS rn
FROM
#tt
) AS trn ON
trn.id1=t.id1 AND
trn.id2=t.id2
WHERE
trn.rn>1;

SELECT*FROM #tt;

DROP TABLE #tt;

关于sql - 自连接查询以查找重复记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31135782/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com