Oracle では、SELECT ステートメントと DISTINCT キーワードを使用してクエリの重複排除を実現し、クエリ結果セット内の重複行をフィルタリングして、クエリ操作後に返される指定した列の値が確実に返されるようにすることができます。 unique; 構文は「SELECT DISTINCT フィールド名 FROM データ テーブル名;」です。
このチュートリアルの動作環境: Windows 7 システム、Oracle 11g バージョン、Dell G3 コンピューター。
Oracle では、SELECT ステートメントと DISTINCT キーワードを使用してクエリの重複排除を実現できます。
SELECT
ステートメントの DISTINCT
句を使用して、結果セット内の重複行をフィルタリングします。これにより、SELECT
句で指定された列 (複数可) に返される値が一意であることが保証されます。
次に、SELECT DISTINCT
ステートメントの構文について説明します。
SELECT DISTINCT column_name FROM table_name;
上記の構文では、table_name の
column_name 列
テーブルの値は、重複を除外するために比較されます。
複数の列に基づいて一意のデータを取得するには、次のように SELECT
句に列のリストを指定するだけです。
SELECT DISTINCT column_1, column_2, ... FROM table_name;
この構文では、 ## の組み合わせです。 #column_1、
column_2、
column_n の値は、データの一意性を判断するために使用されます。
DISTINCT 句は、
SELECT ステートメントでのみ使用できます。
DISTINCT は SQL 標準
UNIQUE の同義語ではないことに注意してください。常に
UNIQUE の代わりに
DISTINCT を使用することをお勧めします。
SELECT DISTINCT の使用例をいくつか示し、その動作を確認します。
) テーブルを表示します:
#次の例では、すべての連絡先の名前を取得します。
SELECT first_name FROM contacts ORDER BY first_name;上記のクエリ ステートメントを実行すると、次の結果が得られます-
#クエリは
319 行を返しました。これは、連絡先 (
contacts) テーブルに 319
行があることを示しています。 一意の連絡先名を取得するには、次のように
DISTINCT
キーワードを上記の
ステートメントに追加します。 <pre class="brush:php;toolbar:false">SELECT DISTINCT first_name
FROM contacts
ORDER BY first_name;</pre>
上記のクエリを実行します。ステートメントを実行し、次の結果を取得します -
302 行を返し、連絡先 (
contacts) テーブルを示しています。 ##17 行が重複しており、フィルタリングされています。
2. Oracle DISTINCT アプリケーションの複数列の例
##次のステートメントは、
order_items
SELECT DISTINCT product_id, quantity FROM ORDER_ITEMS ORDER BY product_id;上記のクエリ ステートメントを実行して、次の情報を取得します。 results-
product_id
列とquantity 列の値を両方とも一意性の評価に使用します。結果セット内の行の数。
3. Oracle DISTINCT および NULL
ステートメントを使用して、複数の NULL
値を持つ列のデータをクエリする場合、結果セットには NULL
値が 1 つだけ含まれます。 サンプル データベースの
locations
テーブルを参照してください。構造は次のとおりです -
次のステートメントは # からのものです。 ##state
列に複数の
値を含むデータを取得します:
SELECT DISTINCT state FROM locations ORDER BY state NULLS FIRST;上記のコード例を実行すると、次の結果が得られます-
#通り 上の図からわかるように、
NULL
推奨チュートリアル: 「Oracle チュートリアル
」以上がOracle でクエリ重複排除を実行する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。