基于其他列值删除sql中的重复项
我想根据以下条件删除重复项 我的表包含交叉关系之类的数据。第1列值存在于第2列中,反之亦然 样本表基于其他列值删除sql中的重复项,sql,sql-server,tsql,sql-delete,Sql,Sql Server,Tsql,Sql Delete,我想根据以下条件删除重复项 我的表包含交叉关系之类的数据。第1列值存在于第2列中,反之亦然 样本表 id id1 ------------- 1 2 2 1 3 4 4 3 5 6 6 5 7 8 8 7 我想删除前两行中的1行,第三行和第四行中的相同,第五行和第六行中的相同,依此类推 有人能帮忙吗?根据您要保留的行的不同,它会有
id id1
-------------
1 2
2 1
3 4
4 3
5 6
6 5
7 8
8 7
我想删除前两行中的1行,第三行和第四行中的相同,第五行和第六行中的相同,依此类推
有人能帮忙吗?根据您要保留的行的不同,它会有所不同,但是如果您确实有简单的副本,如示例中所示,并且每一对都以两种顺序存在,则应该这样做:
DELETE FROM MyTable
WHERE ID > ID1
它会根据您想要保留的行而有所不同,但如果您确实有简单的重复项,如示例中所示,并且每对都以两种顺序存在,则应该这样做:
DELETE FROM MyTable
WHERE ID > ID1
这样,您将从每组2行中仅删除第二行:
CREATE TABLE [LIST_ID](
[ID] [NUMERIC](4, 0) NOT NULL,
[ID_1] [NUMERIC](4, 0) NOT NULL
);
INSERT INTO LIST_ID (ID, ID_1)
VALUES
(1, 2),
(2, 1),
(3, 4),
(4, 3),
(5, 6),
(6, 5);
WITH First_Row AS
(
SELECT ROW_NUMBER() OVER (ORDER BY ID ASC) AS Row_Number, *
FROM LIST_ID
)
DELETE FROM First_Row WHERE Row_Number % 2 ='0';
SELECT * FROM LIST_ID;
这样,您将从每组2行中仅删除第二行:
CREATE TABLE [LIST_ID](
[ID] [NUMERIC](4, 0) NOT NULL,
[ID_1] [NUMERIC](4, 0) NOT NULL
);
INSERT INTO LIST_ID (ID, ID_1)
VALUES
(1, 2),
(2, 1),
(3, 4),
(4, 3),
(5, 6),
(6, 5);
WITH First_Row AS
(
SELECT ROW_NUMBER() OVER (ORDER BY ID ASC) AS Row_Number, *
FROM LIST_ID
)
DELETE FROM First_Row WHERE Row_Number % 2 ='0';
SELECT * FROM LIST_ID;
这个怎么样:
DELETE
FROM myTable
WHERE id IN (
SELECT CASE WHEN id < id1 THEN id ELSE id1 END
FROM myTable
)
其中myTable是包含数据的示例表。这是什么:
DELETE
FROM myTable
WHERE id IN (
SELECT CASE WHEN id < id1 THEN id ELSE id1 END
FROM myTable
)
其中myTable是包含数据的示例表。所以我能理解的是,您希望从id=id1的表中删除行
delete from TableA as a
where exists(select 1 from TableA as b where a.id = b.id1)
所以我能理解的是,您想要从id=id1的表中删除行
delete from TableA as a
where exists(select 1 from TableA as b where a.id = b.id1)