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);
実行後の結果を次の図に示します。