DELETE FROM source dup WHERE EXISTS ( SELECT NULL FROM source WHERE dup.field1=source.field1 AND dup.field2=source.field2 AND source.key## my $data=$dbh->prepare("SELECT key, field1, field2 FROM source ORDER BY field1, field2"); my $del=$dbh->prepare("DELETE FROM source WHERE key=?"); my @last; while (my @record=$data->fetchrow_array()) { if ($record[1] eq $last[1] && $record[2] eq $last[2]) { $del->execute($record[0]); } @last=@record; } $data->finish(); $del->finish();