Distinct は関数ではなく、文の句ですselect
:
データベースが、選択された重複行の各セットのコピーを 1 つだけ返すようにする場合は、DISTINCT または UNIQUE を指定します。これら 2 つのキーワードは同義です。重複行は、選択リスト内の各式の値が一致する行です。
クエリ内の単一の式 (列) に適用することはできませんdistinct
。行全体にのみ適用できます。
結果セットに何を入れたいのかは明確ではありません。name
複数のsurname
値で同じであることを暗示しています。それぞれを 1 回だけ表示する場合は、どの(および他のフィールド) を表示name
するかを決定する必要があります。surname
1 つのオプションは、最小値または最大値をグループ化して選択することです。
select t.name, min(t.surname)
from table t
where ...
group by t.name;
実際のクエリに複数の列がある場合は、分析row_number
またはdense_rank
より適切な場合があるか、keep
句があります。それはあなたが何をしようとしているかによって異なります。
または、フィールドのみが必要で、現在まったく表示されていない場合は、次のようにします。name
surname
select distinct t.name
from table t
where ... ;