sql 怎样删除多条重复记录的一条记录
例:nameNoaaa1aaa1aaa1删除一条记录后得到结果nameNoaaa1aaa1...
例:
name
No
aaa
1
aaa
1
aaa
1
删除一条记录后得到结果
name
No
aaa
1
aaa
1 展开
name
No
aaa
1
aaa
1
aaa
1
删除一条记录后得到结果
name
No
aaa
1
aaa
1 展开
2013-12-19
展开全部
如果所用的数据库是 Microsoft SQL Server的话,对于这种所有字段完全相同的数据记录,是无法做到只删除一条的,因为数据库无法定位这些相同的记录中的某一条!
所以,如果执行删除的话,只有两种可能(具体看你所使用的SQL查询工具了):1)报错,无法删除,比如在SQL企业管理器中直接选中数据并做删除操作;2)相同的记录全部删除,比如用SQL查询分析器。
那么楼主的问题要如何解决呢,思路是这样:
1)去掉重复的:
select distinct * into #tmp from [tablename] --将唯一性记录写入临时表
delete from [tablename] --将原表数据清空(最好先备份一下原数据表)
insert into [tablename] select * from #tmp --从临时表将数据插回
2)如果一定要数据重复,那请修改表[tablename]结构,增加一个[ID]字段,并让它自动增长,以便将相同记录区分开来。然后将需要重复的记录用如下语句重复插入:
insert into [tablename] (字段列表-不包含那个ID字段)
select (字段列表-不包含那个ID字段)from [tablename] where [ID]=XXXX (注:XXX是事先查到的需要重复的记录ID字段值)
GoodLuck!
所以,如果执行删除的话,只有两种可能(具体看你所使用的SQL查询工具了):1)报错,无法删除,比如在SQL企业管理器中直接选中数据并做删除操作;2)相同的记录全部删除,比如用SQL查询分析器。
那么楼主的问题要如何解决呢,思路是这样:
1)去掉重复的:
select distinct * into #tmp from [tablename] --将唯一性记录写入临时表
delete from [tablename] --将原表数据清空(最好先备份一下原数据表)
insert into [tablename] select * from #tmp --从临时表将数据插回
2)如果一定要数据重复,那请修改表[tablename]结构,增加一个[ID]字段,并让它自动增长,以便将相同记录区分开来。然后将需要重复的记录用如下语句重复插入:
insert into [tablename] (字段列表-不包含那个ID字段)
select (字段列表-不包含那个ID字段)from [tablename] where [ID]=XXXX (注:XXX是事先查到的需要重复的记录ID字段值)
GoodLuck!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询