PostgreSQLの重複データ処理

postgresqlデータベースを使用する場合、データテーブルに制約がない場合、複数の同一データ、つまり重複データが存在する可能性があります。以下に示すように:

では、そのうちの2つを削除したい場合はどうでしょうか。最初に、テーブルの内容をクリアしてから、INSERTINTOステートメントを使用して内容をテーブルに挿入できます。この方法は実行可能ですが、専門家にはお勧めできません

2番目の方法では、pgデータベース内のctid(レコードが配置されているデータブロックのどの変位を参照する物理ストレージに関連する)を組み合わせて削除できます。ここでも、SELECTステートメントを使用してクエリを実行します。

 

このようにして、一意に識別されたctidを使用して重複データを削除し、次の2つの方法を使用してtb_5201351テーブル内の2つのデータを削除できます。

DELETE FROM tb_5201351 WHERE ctid in( '(0,2)'、 '(0,3)');

上記の方法の原則は、指定したctidに対応するデータを順番に手動で入力することです。さらにデータがある場合は、次のステートメントを使用して削除することもできます。

DELETE FROM tb_5201351 WHERE ctid not in(select min(ctid)from tb_5201351);

実行後の結果を次の図に示します。

おすすめ

転載: blog.csdn.net/londa/article/details/109411097