批量删除表中的重复数据,仅保留一条不重复数据.

  我们在SQL数据中,经常遇到一个表中有许多的重复数据,如何才能删除那些重复的数据,仅保留一条不重复的数据呢?

一般情况我们会分四步来处理:

复制代码
 1 --原来的表结构:
 2 create table dict_xh
 3 (
 4     id int not null,
 5     xh varchar(50) not null 
 6 )
 7 
 8 --1.新建一张临时表xinghao
 9 create table xinghao
10 (
11     id int not null,
12     xh varchar(50) not null 
13 )
14 --2.设置正确的索引,忽略重复数据。
15     GO
16     -- CSDN标准写法
17     IF EXISTS (SELECT name from sys.indexes
18                WHERE name = N'Ad_xh_Unique') 
19        DROP INDEX Ad_xh_Unique ON xinghao; 
20     GO
21     -- 在表xinghao列xh上 创建一个唯一索引,忽略重复数据
22     CREATE UNIQUE INDEX Ad_xh_Unique 
23        ON xinghao(xh) WITH IGNORE_DUP_KEY ON [PRIMARY]; 
24     GO
25 
26 --3.将带有重复数据的表复制到该临时表中
27     Go
28     insert into xinghao select * from dict_xh
29 --4.删除原重复表的所有数据,将临时表中的数据复制到原重复表,删除临时表
30     GO
31     --删除原表中数据
32     delete from dict_xh
33     --复制临时表中的数据到原表
34     insert into dict_xh select * from xinghao
35     --删除临时表
36     drop table xinghao
复制代码

 

 

posted @   枫上善若水  阅读(433)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
点击右上角即可分享
微信分享提示