根据唯一键(不存在的,你自己根据你判定不唯一的条件组合字符串)group by having count(*)>1. 如果数据很大,慎用。
不知道楼主是不是表数据就一个id不同其它的都不同 1.你可以建一个游标遍历你的表(限制条件为你知道的时间内,这样数据量可能会小些) 2.然后选出一条记录delete from table1 where id > minid and column1 = column1 and column2=column2[ and columnN = columnN...] 如果数据量不大应该还可以大体这么个思路 或者是 insert into tmptable(column1,column2....columnN) select column1,column2...columnN from table 1 group by column1,column2,...columnN相当于把重复数据唯一化去重入到tmptable然后把原表数据删除,把tmptable数据再插回来
有无唯一标识的字段
保留(删除)哪一条记录,比如ID最大 OR 最小
如果数据很大,慎用。
1.你可以建一个游标遍历你的表(限制条件为你知道的时间内,这样数据量可能会小些)
2.然后选出一条记录delete from table1 where id > minid and column1 = column1 and column2=column2[ and columnN = columnN...]
如果数据量不大应该还可以大体这么个思路
或者是
insert into tmptable(column1,column2....columnN) select column1,column2...columnN
from table 1
group by column1,column2,...columnN相当于把重复数据唯一化去重入到tmptable然后把原表数据删除,把tmptable数据再插回来
正常的应该如下:
ID 姓名 交费 日期
1 张三 10元 2010-05-01
2 李四 5元 2010-05-05
3 王武 20元 2010-05-02
4 张三 7元 2010-05-07
............现在是成了这样的:ID 姓名 交费 日期
1 张三 10元 2010-05-01
2 张三 10元 2010-05-01
3 李四 5元 2010-05-05
4 李四 5元 2010-05-05
5 王武 20元 2010-05-02
6 王武 20元 2010-05-02
7 张三 7元 2010-05-07
8 张三 7元 2010-05-07
where exists (select 1 from table1 where 姓名=a.姓名 and 交费=a.交费 and 日期=a.日期 and ID<a.ID)
(select 姓名,min(id) as mi from tt group by 姓名) b
on a.姓名=b.姓名 and a.id=b.mi最好用一个编号,因姓名有重复