如何删除一个表中重复的记录?让其只保留一条记录?在线等待!马上给分。

shaxue 2002-03-16 11:19:14
我知道用:select distinct 可以忽略一个表中重复的记录,但是并没有删除,如果我要把重复的记录删除,让其只保留一条记录,应该怎么写?用sql语言能够实现吗?
...全文
674 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
supsuccess 2002-03-16
  • 打赏
  • 举报
回复
insert into #temp select distinct * from tablename
delete from tablename
insert into tablename select * from #temp
drop table temp
昵称被占用了 2002-03-16
  • 打赏
  • 举报
回复
select distinct ...
into tablename1
from tablename
go

truncate table tablename
go

insert tablename
select ...
from tablename1
go

drop table tablename1
go

kks 2002-03-16
  • 打赏
  • 举报
回复
同意楼上的,不过可以将ID改成ROWNUM
流星尔 2002-03-16
  • 打赏
  • 举报
回复
delete from tablename where id in (select max(id) as id from tablename1 group by filedname)

其中的id是你的自增字段,fieldname是你的表中有重复的字段
Eric2000 2002-03-16
  • 打赏
  • 举报
回复
楼上的说法都有一定的道理。我也不多说了,其实最好的方法是建立唯一性索引。
erickleung 2002-03-16
  • 打赏
  • 举报
回复
我支持 supsuccess(口气不小)的做法, 但为安全计,
还是不要直接删除.

第一步改为

insert into #temp
select * from tablename
group by MyPrimaryKey
having count(*) > 1

手动改正重覆,

然後才做2,3,4步.

但要主要和其他表的关系不影响你的更改.
jlandzpa 2002-03-16
  • 打赏
  • 举报
回复
也可以:
把重复记录的主键放到一个临时表中,再写一个小过程即可。

34,592

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧