Oracleで重複データを1つだけ取得する方法

DDD
リリース: 2023-07-06 11:46:15
オリジナル
9559 人が閲覧しました

重複データの一部のみをフェッチする Oracle の手順: 1. SELECT ステートメントを GROUP BY および HAVING 句と組み合わせて使用​​し、重複データを検索します。 2. ROWID を使用して重複データを削除し、重複データが正確であることを確認します。レコードを削除するか、「ROW_NUMBER()」関数を使用して重複データを削除します。これにより、重複データの各セットの最初のレコードを除くすべてのレコードが削除されます。3. 「select count(*) from」ステートメントを使用して、次の結果が返されます。削除されたレコードの数 保証された結果。

Oracleで重複データを1つだけ取得する方法

#このチュートリアルの動作環境: Windows 10 システム、Oracle バージョン 19c、Dell g3 コンピューター。

Oracle データベースを使用すると、重複したデータ レコードが頻繁に表示されます。これらの重複レコードはストレージ領域を無駄にするだけでなく、データ操作を妨げる可能性があります。そのため、重複データの削除が必要になります。この記事では、Oracle の SQL ステートメントを使用して重複データを削除し、1 つのレコードのみを保持する方法を紹介します。

重複データのテーブル構造を理解する

操作を開始する前に、まず重複データが配置されているテーブルの構造を理解する必要があります。テーブル定義を確認することで、どの列の値が重複データとみなされるのか、またこれがどのように判断されるのかを判断できます。

1. 重複データの検索

SELECT ステートメントを GROUP BY 句および HAVING 句と組み合わせて使用​​し、重複データを検索します。

SELECT 列1, 列2, 列N, COUNT(*) FROM 表名
GROUP BY 列1, 列2, 列N
HAVING COUNT(*) > 1;
ログイン後にコピー

この SQL ステートメントは、重複データのすべてのレコードを返します。各行には、重複データの列値と重複の合計数が含まれます。

2. 重複データの削除

重複データを削除するにはさまざまな方法があります。一般的な方法は次の 2 つです:

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

DELETE FROM 表名 WHERE ROWID NOT IN
(SELECT MAX(ROWID) FROM 表名
GROUP BY 列1, 列2, 列N);
ログイン後にコピー

この SQL ステートメントは、重複データの各セットの最後のレコードを除くすべてのレコードを削除します。 ROWID を使用すると、完全に重複したデータ レコードが確実に削除されます。

2. ROW_NUMBER() 関数を使用して重複データを削除します:

DELETE FROM 表名 WHERE ROWID IN
(SELECT ROWID FROM
(SELECT ROWID, ROW_NUMBER() OVER(PARTITION BY 列1, 列2, 列N ORDER BY 列1) AS rn FROM 表名)
WHERE rn > 1);
ログイン後にコピー

この SQL ステートメントは、重複データの各セットの最初のレコードを除くすべてのレコードを削除します。 ROW_NUMBER() 関数は、指定された列に従ってソートし、PARTITION BY 句と連携してパーティション化を実装し、最初のレコードのみが保持されるようにします。

3. 削除結果の確認

重複データを削除した後、操作の結果を確認して、他の重要なデータが誤って削除されていないことを確認する必要があります。

SELECT COUNT(*) FROM 表名;
ログイン後にコピー

この SQL ステートメントは、重複排除後のレコード数を返します。結果が以前の重複の合計数と大きく異なる場合は、削除操作のエラーが原因である可能性があります。

概要:

重複データの削除は、Oracle データベース管理における一般的なタスクの 1 つです。この記事では、Oracle の SQL ステートメントを使用して重複データを削除する手順を紹介します。これには、重複データの検索、重複データの削除、結果の確認などの詳細な手順が含まれます。これらの手法を合理的に適用することで、データベース内の重複データを効果的にクリーンアップし、データの品質と信頼性を向上させることができます。

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

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