Oracle テーブルから重複行を効率的に削除する
Oracle テーブル内のデータの重複はさまざまなソースから発生する可能性があり、多くの場合、主キーの作成が妨げられ、データの整合性が損なわれます。 この記事では、レコードごとに 1 つの一意のエントリを保持して重複行を削除する簡単な方法を説明します。
解決策:
rowid
疑似列を利用すると、重複行を効果的に特定して削除できます。次の SQL ステートメントはこれを実現します:
<code class="language-sql">DELETE FROM your_table WHERE rowid NOT IN (SELECT MIN(rowid) FROM your_table GROUP BY column1, column2, column3);</code>
説明:
your_table
: これを、重複する行を含むテーブルの名前に置き換えます。rowid
: 各行の一意の識別子は、このプロセスにとって非常に重要です。(SELECT MIN(rowid) FROM your_table GROUP BY column1, column2, column3)
は、rowid
、column1
、および column2
の一意の組み合わせごとに最小の column3
を識別します。 これにより、一意のデータ セットごとに 1 行のみが保持されるようになります。column1
、column2
、および column3
: これらは、各レコードの一意のキーを形成する列を表します。これらを調整して、テーブルの一意性を定義する列と一致させます。 必要に応じて列を追加できます。このクエリを実行すると、重複する行が特定されて削除され、指定されたキーの組み合わせごとに個別のレコードが 1 つだけ残ります。これにより、データの整合性が競合することなく、これらの列に基づいて主キーを作成できるようになります。
以上がデータの整合性を維持しながら Oracle テーブルの重複行を削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。