表一
字段1 字段2 字段3
A B C
A B D
X Y E
A B C
A B D
X B C
X Y D
X Y E
删除 字段1 和字段2 重复的数据 字段3的数据留取哪一个都可以 变成如下内容
字段1 字段2 字段3
A B C
X Y E
------解决思路----------------------
删除之后应该有3行吧
X B C 这行应该保留吧
------解决思路----------------------
DELETE 表1
WHERE EXISTS (SELECT *
FROM 表1 t
WHERE t.字段1 = 表1.字段1
AND t.字段2 = 表1.字段2
AND t.字段3 < 表1.字段3)
------解决思路----------------------
create table #表一
(
字段1 varchar(10), 字段2 varchar(10), 字段3 varchar(10))
insert into #表一 values
('A', 'B', 'C'),
('A', 'B', 'D'),
('X', 'Y', 'E'),
('A', 'B', 'C'),
('A', 'B', 'D'),
('X', 'B', 'C'),
('X', 'Y', 'D'),
('X', 'Y', 'E')
with cte as
(
select *,ROW_NUMBER()over(PARTITION by 字段1,字段2,字段3 order by newid()) id from #表一
)
delete from cte where id>1
select * from #表一
------解决思路----------------------
根据 #2
还差一点

有重复
------解决思路----------------------
根据 #3 的
;with cte as
(
select *,ROW_NUMBER()over(PARTITION by 字段1,字段2,字段3 order by newid()) id from #表一
)
delete from cte where id=1
上面的 where id >1 要改为 等于 1 ,不然删反了
