概要:このチュートリアルでは、Oracle SELECT DISTINCT
文を使用してテーブルから個別のデータを照会する方法を学びます。
Introduction to Oracle SELECT DISTINCT statement
DISTINCT
句は、結果セットで重複する行をフィルタする SELECT
文で使用されています。
SELECT DISTINCT
文の構文を以下に示します。
この文では、table
の column_1
にある値が比較されて重複が判断されます。
複数の列に基づいて一意のデータを取得するには、次のようにSELECT
句で列リストを指定するだけです:
この構文では、column_1
、column_2
、column_3
の値の組み合わせによってデータの一意性が判断されます。
DISTINCT
句はSELECT
文でのみ使用できます。
DISTINCT
は標準SQLではないUNIQUE
と同義語であることに注意してください。
Oracle SELECT DISTINCT の例
SELECT DISTINCT
を使用して、それがどのように機能するかを確認するためのいくつかの例を見てみましょう。
A) Oracle SELECT DISTINCT 1列の例
サンプルデータベースのcontacts
テーブルを見てみましょう。
次の例は、すべての連絡先のファーストネームを取得します。
このクエリは319列を返し、contacts
テーブルが319行を有することが示されました。
一意の連絡先名を取得するには、次のように上記の SELECT
文に DISTINCT
キーワードを追加します:
さて、結果セットは 302 行になり、17 の重複する行が削除されたことを意味します。
B) Oracle SELECT DISTINCT 複数列の例
次のorder_items
表を見てください:
次の文はorder_items
表から個別の製品IDと数量を選択します。
以下は結果を示しています:
この例では、product_id
と quantity
列の両方の値は、結果セット内の行の一意性を評価するために使用されています。
C) Oracle SELECT DISTINCTとNULL
DISTINCT
はNULL値を互いに重複しているものとして扱います。 多くの NULL 値を持つ列からデータを照会するために SELECT DISTINCT
文を使用すると、結果セットには 1 つの NULL 値のみが含まれます。
サンプル・データベースの locations
テーブルを参照してください。
次のステートメントは、多くの NULL 値を持つ state 列からデータを取得します:
結果:
ご覧のように、NULL 値は 1 つだけ返されます。
いくつかの列に DISTINCT
を適用し、他の列をスキップしたい場合は、代わりに GROUP BY
節を使用する必要があります。
このチュートリアルでは、SELECT DISTINCT
文を使用して 1 つまたは複数の列に基づいて一意のデータを取得する方法について学びました。