sql server 2000 删除重复项
发布网友
发布时间:2022-04-08 02:47
我来回答
共3个回答
热心网友
时间:2022-04-08 04:17
select distinct * into # from Tab1 --过滤重复数据并生成临时表#
truncate table Tab1--清空表Tab1
insert TAb1 select * from # --把临时表#数据导入Tab1追问#指的是?
追答#--是臨時表
热心网友
时间:2022-04-08 05:35
四板斧——轻松消除重复记录
殊不知在SQL Server中有一种更为简单的方法,它不需要用游标,只要写一句简单插入语句就能实现删除重复记录的功能。为了能清楚地表述,我们首先假设存在一个产品信息表Procts,其表结构如下:
CREATE TABLE Procts (
ProctID int,
ProctName nvarchar (40),
Unit char(2),
UnitPrice money
)
表中的数据如图1:
sqlserver(转) - 饿狼 - 好色之徒
图表
图1中可以看出,产品Chang和Tofu的记录在产品信息表中存在重复。现在要删除这些重复的记录,只保留其中的一条。步骤如下:
第一板斧——建立一张具有相同结构的临时表
CREATE TABLE Procts_temp (
ProctID int,
ProctName nvarchar (40),
Unit char(2),
UnitPrice money
)
第二板斧——为该表加上索引,并使其忽略重复的值
方法是在企业管理器中找到上面建立的临时表Procts _temp,单击鼠标右键,选择所有任务,选择管理索引,选择新建。如图2所示。
按照图2中圈出来的地方设置索引选项。
sqlserver(转) - 饿狼 - 好色之徒
图2
第三板斧——拷贝产品信息到临时表
insert into Procts_temp Select * from Procts
此时SQL Server会返回如下提示:
服务器: 消息 3604,级别 16,状态 1,行 1
已忽略重复的键。
它表明在产品信息临时表Procts_temp中不会有重复的行出现。
第四板斧——将新的数据导入原表
将原产品信息表Procts清空,并将临时表Procts_temp中数据导入,最后删除临时表Procts_temp。
delete Procts
insert into Procts select * from Procts_temp
drop table Procts_temp
这样就完成了对表中重复记录的删除。无论表有多大,它的执行速度都是相当快的,而且因为几乎不用写语句,所以它也是很安全的。
小提示:上述方法中删除重复记录取决于创建唯一索引时选择的字段,在实际的操作过程中读者务必首先确认创建的唯一索引字段是否正确,以免将有用的数据删除。
热心网友
时间:2022-04-08 07:09
delete [表名] where id not in(]select max(id) from [表] where group by name,chengji )