常用的语句
1、查找表中多余的重复记录,重复记录是根据单个字段(mail_id)来判断
代码如下 复制代码
select * from table where mail_id in (select mail_id from table group by mail_id having count(mail_id) > 1);
2、删除表中多余的重复记录,重复记录是根据单个字段(mail_id)来判断,只留有rowid最小的记录
代码如下 复制代码
delete from table where mail_id in (select mail_id from table group by mail_id having count(mail_id) > 1) and rowid not in (select min(rowid) from table group by mail_id having count(mail_id )>1);
3、查找表中多余的重复记录(多个字段)
代码如下 复制代码
select * from table where (mail_id,phone) in (select mail_id,phone from table group by mail_id,phone having count(*) > 1);
4、删除表中多余的重复记录(多个字段),只留有rowid最小的记录
代码如下 复制代码
delete from table where (mail_id,phone) in (select mail_id,phone from table group by mail_id,phone having count(*) > 1) and rowid not in (select min(rowid) from table group by mail_id,phone having count(*)>1);
5、查找表中多余的重复记录(多个字段),不包含rowid最小的记录
代码如下 复制代码
select * from table where (a.mail_id,a.phone) in (select mail_id,phone from table group by mail_id,phone having count(*) > 1) and rowid not in (select min(rowid) from table group by mail_id,phone having count(*)>1);
存储过程
代码如下 复制代码
declare @max integer,@id integer
declare cur_rows cursor local for 主字段,count(*) from 表名 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 表名 where 主字段 = @id
fetch cur_rows into @id,@max
end
close cur_rows
set rowcount 0
