ホームページ > データベース > Oracle > Oracleで重複データを削除する方法

Oracleで重複データを削除する方法

PHPz
リリース: 2023-04-25 09:27:46
オリジナル
3111 人が閲覧しました

データ処理中に、データの重複の問題が頻繁に発生します。データの正確性とデータ ウェアハウスの明確性を確保するために、データベース内の重複データを削除する必要があることがよくあります。この記事では、Oracleデータベースの重複データを削除する方法を紹介します。

  1. データの重複を判断する

重複データを削除する前に、まずどのデータが重複しているかを判断する必要があります。 SELECT ステートメントと GROUP BY ステートメントを使用して、重複データをクエリできます。たとえば、「tablename」という名前のテーブルがあり、「columnname」という名前のフィールドが含まれています。次のステートメントを使用すると、すべての重複データを検索できます:

SELECT 列名, COUNT(*) as count
FROM テーブル名
GROUP BY 列名
HAVING COUNT(*) > 1;

このステートメントは、すべての重複データの数と重複フィールドの値を返します。重複したデータをすべて削除したい場合は、次のステートメントを使用できます:

DELETE FROM tablename
WHERE columnname IN (SELECT columnname
FROM tablename
GROUP BY columnname
HAVING COUNT ( *) > 1);

このステートメントの "IN" キーワードは、"columnname" フィールド内の重複を選択し、これらの行を削除することを意味します。

  1. ROWID を使用して重複データを削除する

Oracle データベースの ROWID は、データベース内で一意の識別子です。 ROWID を使用して重複データを削除できます。次に、ROWID を使用して重複データを削除する例を示します。

DELETE FROM tablename
WHERE ROWID NOT IN

(SELECT MIN(ROWID) 
 FROM tablename 
 GROUP BY columnname);
ログイン後にコピー

このステートメントは、最初の重複行を除くすべての重複行を削除します。 「SELECT」ステートメントでは、「columnname」フィールドの最小の ROWID をクエリし、それを行 ID 内の他の重複値と比較します。最初の重複行の ROWID のみが他の ROWID と一致せず、データベースに残ります。

  1. CTE を使用して重複データを削除する

共通テーブル式 (CTE) を使用することも重複データを削除する方法です。以下は、CTE を使用して重複データを削除する例です:

WITH cte AS

(SELECT columnname, 
        ROW_NUMBER() OVER 
            (PARTITION BY columnname ORDER BY columnname) AS rn 
 FROM tablename)
ログイン後にコピー

DELETE FROM cte
WHERE rn > 1;

この例では、 「SELECT」ステートメントを使用して、CTE に「cte」という名前を付けます。このステートメントは ROW_NUMBER() 関数を使用して、「columnname」フィールドに基づいてデータを昇順 (ORDER BY) に分割および並べ替えます。その後、「rn」rn」が 1 より大きい行をすべて削除します。

  1. DISTINCT キーワードを使用して重複データを削除します

最後の方法では、次の重複データを削除します。 Oracle データベース この方法は、DISTINCT キーワードを使用することです。次は、DISTINCT キーワードを使用して重複データを削除する例です:

DELETE FROM tablename
WHERE columnname NOT IN

(SELECT DISTINCT columnname 
 FROM tablename);
ログイン後にコピー

この例では、ネストされた SELECT ステートメントを使用します。サブクエリでは、DISTINCT キーワードを使用して一意の "columnname" 値を検索し、それを "columnname" フィールドと比較します。このステートメントは、サブクエリの結果に含まれるすべての重複データを削除します。

概要

重複データの削除は、データを処理する際の重要な手順です。Oracle データベースには、重複行を削除するためのさまざまな方法が用意されています。SELECT ステートメントと GROUP BY ステートメントを使用して、どちらを削除するかを決定できます。データが重複している場合は、DELETE ステートメントを使用してこれらのデータを削除します。さらに、ROWID、CTE、および DISTINCT キーワードを使用してデータベース内の重複データを削除することもできます。これらの手法を使用すると、データとデータの正確性を確保できます。データ ウェアハウスの明確さ。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート