一条删除语句
各位大哥帮帮忙给看看,
在一个表里面有很多相同的记录,如何只保留唯一的一条记录,其他多余的都删了。
这样的SQL语句怎么写?
谢谢!
问题点数:20、回复次数:5Top
1 楼xluzhong(Ralph)回复于 2005-01-27 15:39:16 得分 10
如果有主键id
则:delete from tablename where id not in(select min(id) from tablename group by col1,col2..)
如果没有id
则:alter table tablename add id int identity(1,1)
delete from tablename where id not in(select min(id) from tablename group by col1,col2..)
Top
2 楼daijingjie2002(艰苦创业)回复于 2005-01-27 15:40:49 得分 5
先设定主键,如果不行请加一列自增列设定成主键
delete from 表 where id not in(select max(id) from 表 group by aa,bb,cc)Top
3 楼Qihua_wu(小吴)回复于 2005-01-27 16:19:44 得分 5
1楼和2楼的回答的有问题,只保留了重复数据的第一条和最后一条,却把不重复的也删了
如果没有identity属性字段
则:alter table tablename add id int identity(1,1)
delete from tablename a where a.id not in (select min(id) from tablename group by 判断重复的字段) and exists (select 判断重复的字段 from tablename c where a.判断重复的字段 = c.判断重复的字段)
如果有identity属性字段
则:delete from tablename a where id not in(select min(id) from tablename group by 判断重复的字段) and exists (select 判断重复的字段 from tablename c where a.判断重复的字段 = c.判断重复的字段)
Top
4 楼zhang_yzy(六子儿)回复于 2005-01-27 16:28:34 得分 0
若没有外键的话,先按要求将数据插入一个临时表中,再将表中数据删除掉,最好将临时表中的数据插入表中,不就可以了吗?Top
5 楼chiwei(水手)回复于 2005-01-27 16:49:41 得分 0
谢谢各位大哥
以上方法好像都没有问题,可惜分数给得太少了!
TO xluzhong(打麻将一缺三,咋办?) 下次打麻将三缺一的时候叫我去吧!
多谢各位了~!
Top




