SQL文で削除して繰り返します。
1688 ワード
数千の記録には同じ記録があります。SQL文で削除して繰り返します。
1、検索テーブルに余分な重複記録があり、重複記録は単一のフィールド(peopleId)によって判断されます。
2、表の余分な重複記録を削除し、重複記録は単一のフィールド(peopleId)によって判断し、rowidの最小記録のみを残している。
3、検索テーブルの余分な重複記録(複数のフィールド)
4、表の余分な重複記録(複数のフィールド)を削除し、rowidの最小記録のみを残します。
5、ルックアップテーブルに余分な重複記録(複数のフィールド)は、rowidの最小記録を含まない
例えば、Aテーブルにフィールド「name」が存在し、異なるレコード間の「name」の値が同じである可能性があります。 今はこの表の各記録の間に「name」の値が重複している項目があるかどうかを調べる必要があります。
1、検索テーブルに余分な重複記録があり、重複記録は単一のフィールド(peopleId)によって判断されます。
select * from people
where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1)
2、表の余分な重複記録を削除し、重複記録は単一のフィールド(peopleId)によって判断し、rowidの最小記録のみを残している。
delete from people
where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1)
and rowid not in (select min(rowid) from people group by peopleId having count(peopleId )>1)
3、検索テーブルの余分な重複記録(複数のフィールド)
select * from vitae a
where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
4、表の余分な重複記録(複数のフィールド)を削除し、rowidの最小記録のみを残します。
delete from vitae a
where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)
5、ルックアップテーブルに余分な重複記録(複数のフィールド)は、rowidの最小記録を含まない
select * from vitae a
where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)
例えば、Aテーブルにフィールド「name」が存在し、異なるレコード間の「name」の値が同じである可能性があります。 今はこの表の各記録の間に「name」の値が重複している項目があるかどうかを調べる必要があります。
Select Name,Count(*) From A Group By Name Having Count(*) > 1