データ処理中に、データの重複の問題が頻繁に発生します。データの正確性とデータ ウェアハウスの明確性を確保するために、データベース内の重複データを削除する必要があることがよくあります。この記事では、Oracleデータベースの重複データを削除する方法を紹介します。
重複データを削除する前に、まずどのデータが重複しているかを判断する必要があります。 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" フィールド内の重複を選択し、これらの行を削除することを意味します。
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 と一致せず、データベースに残ります。
共通テーブル式 (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 より大きい行をすべて削除します。
最後の方法では、次の重複データを削除します。 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 サイトの他の関連記事を参照してください。