ホームページ >データベース >Oracle >Oracleのデータ重複排除

Oracleのデータ重複排除

王林
王林オリジナル
2023-05-18 10:03:081084ブラウズ

データベースでは、重複データは削除する必要があるオブジェクトの 1 つであることがよくあります。 Oracle データベースには重複データを削除する複数の方法が用意されており、この記事ではそのうちのいくつかを紹介します。

1. UNIQUE 制約の使用

UNIQUE 制約は、各テーブルの列に一意の値が格納されるようにするために Oracle データベースで使用されるメカニズムです。テーブル内の重複データを削除する場合は、重複を排除する必要がある列に UNIQUE 制約を追加し、INSERT IGNORE または REPLACE INTO ステートメントを通じてデータを挿入します。挿入中に重複データが見つかった場合、そのデータは無視されるか、新しいデータに置き換えられます。

たとえば、students という名前のテーブルがあり、そこには学生の学生番号と名前が含まれています。学生 ID の一意性を確保したい場合は、次のステートメントを使用できます:

ALTER TABLE students ADD CONSTRAINT unique_stu_id UNIQUE (stu_id);

このステートメントでは、stu_id 列のデータの一意性を確保するために、Students テーブルに UNIQUE 制約を追加します。 。

2. ROWID の使用

ROWID は Oracle データベースの非常に特殊な列で、データの各行を一意に識別できます。 ROWID を通じて重複データを削除できます。以下は、ROWID を使用して重複データを削除する例です。

DELETE FROM students WHERE ROWID NOT IN (SELECT MAX (ROWID) FROM students GROUP BY stu_id, name);

このステートメントでは、サブクエリを使用して、繰り返される stu_id と名前の組み合わせごとに最大の ROWID 値を持つデータ行を検索し、それを検索します。データは保持され、残りのデータは削除されます。

3. 一時テーブルを使用する

一時テーブルを使用して重複データを削除することも、頻繁に使用される方法です。まず一時テーブルを作成し、次に重複排除する必要があるデータを一時テーブルに挿入し、次に元のテーブルのデータを削除し、最後に一時テーブルのデータを元のテーブルに再挿入する必要があります。この方法ではデータの整合性と一貫性を確保できますが、より多くの時間とスペースが必要になります。

次は、一時テーブルを使用して重複データを削除する例です。

CREATE TABLE students_new AS SELECT DISTINCT * FROM students;

TRUNCATE TABLE students;

INSERT INTO students SELECT * FROM students_new;

DROP TABLE students_new;

このステートメントでは、students_new という名前の一時テーブルを作成し、students テーブルから重複データを削除します。次に、一時テーブルのデータを削除し、最後に一時テーブルのデータを学生テーブルに再挿入して、重複排除操作を完了します。

4. CTE の使用

CTE (Common Table Expression) は、SQL ステートメント内に一時テーブルを定義できるメソッドです。 CTE を使用すると、データの重複排除操作を 1 つの SQL ステートメントで完了できます。次に、CTE を使用して重複データを削除する例を示します。

WITH CTE AS (
  SELECT stu_id, name,
    ROW_NUMBER() OVER (PARTITION BY stu_id, name ORDER BY ROWID) RN
  FROM students
)
DELETE FROM CTE WHERE RN > 1;

このステートメントでは、WITH キーワードを使用して CTE という名前の一時テーブルを定義し、ROW_NUMBER 関数を使用してデータの各行を割り当てます。 stu_id Number に名前を付け、最後に 1 より大きい行番号を持つデータを削除して、重複排除操作を完了します。

概要

上記の方法は、Oracle データベース内の重複データを効果的に削除できます。どの方法を選択するかは、実際の状況とニーズによって異なります。たとえば、少量の重複データをすばやく削除したい場合は 2 番目の方法を使用でき、データ量が多い場合は 3 番目の方法または 4 番目の方法を使用できます。つまり、実際の状況に基づいて重複データを削除するための最適な方法を選択する必要があり、データの損失や操作エラーを避けるために、データを削除する前にバックアップとテストを行う必要があります。

以上がOracleのデータ重複排除の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。