ホームページ  >  記事  >  データベース  >  Oracleクエリの重複データ

Oracleクエリの重複データ

王林
王林オリジナル
2023-05-13 21:46:059523ブラウズ

Oracle による重複データのクエリ

データベースから重複データをクエリする必要がある場合、Oracle のさまざまな方法を使用してそれを実現できます。 Oracle では、重複データとは、同じ列に出現する同じ値を指し、これらの値が複数回出現することがよくあります。

次に、Oracle 重複データをクエリするいくつかの方法を紹介します。

方法 1: GROUP BY と HAVING を使用する

GROUP BY と HAVING の機能は、データをグループ化してフィルター処理することです。これら 2 つのステートメントを一緒に使用して、重複データをクエリできます。

たとえば、employees という名前のテーブルがあり、このテーブルには従業員名 (ename) と給与 (sal) の 2 つのフィールドが含まれています。重複する給与を持つ従業員の名前と給与をクエリする場合は、次のステートメントを使用できます。

SELECT ename, sal, COUNT() FROMemployees GROUP BY ename, sal HAVING COUNT() > ; 1;

上記のクエリ ステートメントを実行すると、重複する給与を持つすべての従業員の名前と給与を取得できます。

方法 2: ウィンドウ関数を使用する

ウィンドウ関数は、クエリ結果の集計関数や分析関数を計算できるメソッドです。ウィンドウ関数を使用して重複データをクエリできます。

たとえば、orders という名前のテーブルがあり、このテーブルには注文番号 (order_id) と販売数量 (sales) の 2 つのフィールドが含まれています。販売が繰り返される注文番号と販売量をクエリする場合は、次のステートメントを使用できます:

SELECT order_id, sales FROM ( SELECT order_id, sales, COUNT(*) OVER(PARTITION BY sales) A​​S cnt FROM 注文 ) WHERE cnt > 1;

上記のクエリ ステートメントを実行すると、すべての反復販売の注文番号と販売数量を取得できます。

方法 3: 自己結合を使用する

自己結合は、同じテーブルの異なるインスタンスを接続してデータをクエリする方法です。自己結合を使用して重複データをクエリできます。

たとえば、customers という名前のテーブルがあり、顧客名 (name) と携帯電話番号 (phone) の 2 つのフィールドが含まれています。重複する携帯電話番号を持つ顧客の名前と携帯電話番号をクエリする場合は、次のステートメントを使用できます:

SELECT c1.name, c1.phone FROM Customers c1 JOIN Customers c2 ON c1.phone = c2.phone AND c1 .name <> c2.name;

上記のクエリ ステートメントを実行すると、重複する携帯電話番号を持つすべての顧客名と携帯電話番号を取得できます。

概要

Oracle では、GROUP BY や HAVING、ウィンドウ関数、自己結合などのさまざまなステートメントを使用して、繰り返されるデータをクエリできます。使用する場合は、より効率的なクエリ効果を達成するために、実際の状況に応じて適切な方法を選択する必要があります。同時に、クエリ時間と消費されるリソースを可能な限り削減するために、クエリ ステートメントの最適化にも注意を払う必要があります。

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

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