首页 新闻 搜索 专区 学院

sql severs 2008

0
悬赏园豆:5 [已解决问题] 解决于 2012-12-26 16:38

当建一个与外部表无任何的关系的表(没主键和标识列),表的行是可以重复的,但如何删除重复行?还有就是如果此表有标识列,insert同样的行再删除,然后再insert,发现标识列是从刚刚删除的行的最后一行标识列的值开始了,这又是怎么回事?

AYCTey的主页 AYCTey | 初学一级 | 园豆:149
提问于:2012-12-26 15:05
< >
分享
最佳答案
1

自增的字段就是这样的,就好像对于这个表有个公共的计数器,一直向前。

删除肯定是要提供一个where条件的,最坏的情况,就是表中所有的字段都作为条件

收获园豆:3
chenping2008 | 大侠五级 |园豆:9836 | 2012-12-26 16:22
其他回答(1)
1

可以创建一个临时表,查询出不重复的数据copy的临时表,然后干掉原表数据在把数据重临时表copy回来

select distinct * into temp from tablename
 delete from tablename
 insert into tablename select * from temp

或者用

delete from tablename where id not in (select max(id) from tablename group by col1,col2,...)

收获园豆:2
骷髅人 | 园豆:464 (菜鸟二级) | 2012-12-26 16:02
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册