sql中如何sql语句去掉重复数据与下一条数据重复的数据

sql中如何删除一个表中重复的记录?_百度知道
sql中如何删除一个表中重复的记录?
create table a_dist(id int,name varchar(20))insert into a_dist values(1,'abc')insert into a_dist values(1,'abc')insert into a_dist values(1,'abc')insert into a_dist values(1,'abc')删除重复记录,sql语句该怎么写?
我有更好的答案
1、必须保证表中有主键或者唯一索引,或者某列数据不能重复。只有这样,才可能使用一句SQL来实现。否则只能考虑其它办法。下面的语句,假定BB列是不重复的,删除后保存BB列值最大的那条记录。delete from 表 where aa in (select aa from 表 group by aa having count(aa) & 1) and bb not in (select max(bb) from 表 group by aa having count(aa) & 1); 2、有多种写法:delete A from B where A.AA = B.AAdelete A from A,B where A.AA = B.AAdelete A where AA in (select AA from B)3、使用into关键字:select * into 新表名 from 原表4、取数据前3位,字段必须是类似char类型,使用类似substring这样的函数(SYBASE是substring,ORACLE是substr):select substring(字段,1,3) from 表名
采纳率:76%
create view a_dist_view as select a.*, row_number() over(order by id, name) rn from a_dist as adelete from a_dist_view where rn && 1
能给解释解释思路吗,看不懂意思,row_numbenr(),over(order by id, name) rn 什么意思where rn && 1 什么意思
row_numbenr() over(order by id, name) rn-- 这是一个数据库分析函数,含义是:按照id, name 排序(order by id, name),列出记录的序号。where rn && 1 什么意思-- 如果id,name相同的话,rn会从1一直累加,所以如果要删除重复记录,只要保存rn=1的即可,所以删除 rn && 1 的记录。具体的含义如果还不清楚,你在机器上执行下sql就能明白了。
本回答被提问者采纳
delete 表 a wher rowid &&(max(rowid) from 表 b where a.重复项=b.重复项 );
如果记录完全相同才算重复记录,那么: (sql server2000下测试通过)select distinct * into #tmpp from tiddelete from tid insert into tid select * from #tmppdrop table #tmpp 如果有id主键(数字,自增1的那种),那么:(sql server2000下测试通过)delete from tableA where id not in(select id = min(id) from tableA group by name)
先删后加delete from a_dist
where id ='1' and name= 'abc' 执行删掉所有这样的记录,然后把数据记录下来在添加一次insert into a_dist values(1,'abc');
还是跟着热心网友混生活吧。
可以给你个想法,把不重复的多出来放到一个临时表中,删除原表,再将临时表的数据插入原表
其他5条回答
为您推荐:
其他类似问题
您可能关注的内容
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。& 1.要删除所有列都是相同的重复行,并且ID不是自动增长列,主键列,要想只保留一行数据,最简单有效的方法就是用临时表进行删除
&&&&&& select distinct * into #tmp from tablename
&&&&&& drop table tablename
&&&&&& select * into tablename from #tmp
&&&&&& drop table #tmp
2.用游标进行删除
declare @max integer,@id integer declare cur_rows cursor local for select 主字段,count(*) from tablename group by 主字段 having count(*) & 1 open cur_rows fetch cur_rows into @id,@max while @@fetch_status=0 begin select @max = @max -1 set rowcount @max delete from tablename where 主字段= @id fetch cur_rows into @id,@max end close cur_rows set rowcount 0
阅读(...) 评论()求一SQL语句,同一字段重复的数据只取一条
[问题点数:20分,结帖人bitm]
求一SQL语句,同一字段重复的数据只取一条
[问题点数:20分,结帖人bitm]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2008年4月 PowerBuilder大版内专家分月排行榜第二2007年1月 PowerBuilder大版内专家分月排行榜第二2007年7月 扩充话题大版内专家分月排行榜第二2006年12月 PowerBuilder大版内专家分月排行榜第二
2008年4月 PowerBuilder大版内专家分月排行榜第二2007年1月 PowerBuilder大版内专家分月排行榜第二2007年7月 扩充话题大版内专家分月排行榜第二2006年12月 PowerBuilder大版内专家分月排行榜第二
2008年2月 MS-SQL Server大版内专家分月排行榜第二2007年7月 MS-SQL Server大版内专家分月排行榜第二2002年3月 MS-SQL Server大版内专家分月排行榜第二2002年1月 MS-SQL Server大版内专家分月排行榜第二2001年12月 MS-SQL Server大版内专家分月排行榜第二
2013年2月 MS-SQL Server大版内专家分月排行榜第三
2008年4月 PowerBuilder大版内专家分月排行榜第二2007年1月 PowerBuilder大版内专家分月排行榜第二2007年7月 扩充话题大版内专家分月排行榜第二2006年12月 PowerBuilder大版内专家分月排行榜第二
2008年 总版技术专家分年内排行榜第二
2010年 总版技术专家分年内排行榜第四2009年 总版技术专家分年内排行榜第五2007年 总版技术专家分年内排行榜第六
2008年 总版技术专家分年内排行榜第二
2010年 总版技术专家分年内排行榜第四2009年 总版技术专家分年内排行榜第五2007年 总版技术专家分年内排行榜第六
匿名用户不能发表回复!|}

我要回帖

更多关于 sql 去掉重复的数据 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信