打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
delphi 删除重复记录

delphi 删除重复记录

时间:2011-5-24来源:yang 作者: peng点击: 92次

方法一. 使用Group子查询查出重复的条目 (这里用max得到大的ID)

DELETE FROM [user] WHERE ID NOT IN
(SELECT MAX(ID) FROM [user] GROUP BY [name])

方法二. 使用自连接

delete from table where ID = (
select ID from table t1 , table t2 where t1.name = t2.name and t1.ID > t2.ID )

方法三. 使用重新插入 Ignore dup key
/*四板斧——轻松消除重复记录*/

--第一板斧——建立一张具有相同结构的临时表
--建立临时表
select * into tempCard from cmc_contactCard where 1=2

--第二板斧——为该表加上索引,并使其忽略重复的值
--在临时表上建立忽略重复值的索引
CREATE UNIQUE
  INDEX Index_Name ON tempCard (Enterprise_Name, Contact_Name)
WITH
    IGNORE_DUP_KEY

--第三板斧——拷贝产品信息到临时表
--插入源表数据到临时表
insert into tempCard select * from cmc_contactCard

--第四板斧——将新的数据导入原表
--清空源表记录
truncate table cmc_contactCard
--回写所有消掉重复值的记录
insert into cmc_contactCard select * from tempCard
--删除临时表
drop table tempCard

方法四: 使用游标

--创建表并填充数据
create table b_dist(id int,name varchar(20), dept varchar(20))

insert into b_dist values(1,‘abc‘,‘sales‘)
insert into b_dist values(2,‘abc‘,‘sales‘)
insert into b_dist values(3,‘abc‘,‘market‘)
insert into b_dist values(4,‘abc‘,‘sales‘)
insert into b_dist values(5,‘abc‘,‘infos‘)
insert into b_dist values(6,‘abc‘,‘market‘)
insert into b_dist values(7,‘abc‘,‘backup‘)


--使用游标逐个比较, 把关键的字段要排序
declare @id int
declare @name varchar(20)
declare @dept varchar(20)
declare @prevname varchar(20)
declare @prevdept varchar(20)

declare cur cursor for select id, name, dept from b_dist order by  name, dept
open cur
fetch next from cur into @id, @name, @dept

while @@FETCH_STATUS = 0
begin
  if (@dept=@prevdept) and (@name=@prevname)
    delete from b_dist where id=@id
 
  select @prevname=@name, @prevdept=@dept  
  fetch next from cur into @id, @name, @dept
end

close cur
deallocate cur

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
精妙的SQL语句
用SQL语句删除重复记录的四种方法
SQL连接(内连接,左连接,右连接,自连接)详解
SQL复杂查询语句的使用
Mysql基础篇(三)之多表查询
MySQL数据查询之多表查询
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服