ホームページ >データベース >mysql チュートリアル >Oracle データベースのクエリ スキル: 重複データを 1 つだけ取得する
実際のデータベース クエリでは、重複データを取得する必要があることがよくあります。 from 唯一のデータを取得します。この記事では、Oracle データベースのテクニックを使用して重複データから 1 つのレコードのみを取得する方法を紹介し、具体的なコード例を示します。
従業員情報を含む employee
という名前のテーブルがあるとします。従業員情報が重複している可能性があります。重複する従業員情報をすべて取得するのではなく、重複するすべての従業員情報のレコードをクエリする必要があります。
この要件を達成するには、Oracle データベースのウィンドウ関数 ROW_NUMBER()
を PARTITION BY
ステートメントと組み合わせて使用します。具体的な実装のアイデアは、各レコードにシリアル番号を割り当て、シリアル番号 1 のレコードをフィルターで除外して、繰り返されるデータの各セットの最初のレコードを取得することです。
以下は、上記の考え方に基づく具体的なコード例です。
SELECT * FROM ( SELECT e.*, ROW_NUMBER() OVER (PARTITION BY e.employee_id ORDER BY e.employee_id) AS rn FROM employee e ) tmp WHERE rn = 1;
上記のコードでは、最初にサブクエリを通じてシリアル番号 rn
が各レコードに追加されます。 、および employee_id
フィールドに基づくグループ。次に、外部クエリでシリアル番号 1 のレコードをフィルターで除外すると、繰り返されるデータの各セットの最初のレコードを取得できます。
employee
テーブルが次の構造を持つと仮定します:
employee_id | 名前 | 部門 |
---|---|---|
1 | 张三 | 技術部門 |
2 | 李四 | 営業部 |
3 | 王五 | # #財務部 |
张三 | 技術部 | |
李思 | 営業部 |
#name | 部門 | |
---|---|---|
张三 | 技術部 | |
李四 | 営業部 | |
王五 | 財務部 |
概要
と PARTITION BY
ステートメントを使用すると、この要件を簡単に達成でき、クエリの効率とデータ処理の精度が向上します。この記事が実際のデータベース クエリ作業に役立つことを願っています。
以上がOracle データベースのクエリ スキル: 重複データを 1 つだけ取得するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。