データベーススペシャリスト暗記無料で始める

DISTINCTとは?でぃすてぃんくと

DISTINCTとは、選択リストの前に置き、問合せ結果から重複する行を取り除く指定。関係モデルの関係は重複を含まない集合だが、SQLの表は同じ行を複数持てる多重集合なので、集合としての振る舞いが欲しい場面では明示が要る。除去には整列またはハッシュ処理が伴うため、無視できない負荷を生む点も押さえる。

最終更新:2026-10-06

試験情報

データベーススペシャリスト試験の過去問では1回出題されています。

データベーススペシャリスト試験の頻出用語/午前II

この語が出る過去問を解く →

背景

関係モデルとSQLのずれから生まれた指定である。理論どおり常に重複を排除する実装にすると、件数を数える・金額を合計するといった処理で必要な重複まで消え、しかもすべての問合せに整列コストがのしかかる。そこで既定は重複を残し、必要な場面だけ利用者が指定する形に落ち着いた。db試験では、重複がどの結合から生まれたかを見抜き、より安い書き方へ置き換えられるかが問われる。

具体例

会員表と受注表を結合して会員名を取り出すと、受注が3件ある会員は3行現れる。DISTINCTで1行にまとめられるが、内部では整列かハッシュが走る。重複の原因が結合そのものであれば、WHERE EXISTS (SELECT * FROM 受注 …) で「受注を持つ会員」を絞るほうが、大きな結合結果を作らずに済むぶん速いことが多い。

試験での引っ掛け

効く範囲は選択リスト全体であって、直後の1列だけではない。SELECT DISTINCT 支店名, 商品名 は2列の組合せで重複を判定する。また COUNT(DISTINCT 列) と COUNT(*) は別物で、前者はNULLを除いた異なり値の個数、後者はNULLを含む行数を返す。GROUP BYでも同じ結果が得られる場面との使い分けも問われる。

関連用語

出た過去問

解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。

この語が出る過去問を解く →

試験での特徴
  • 試験では1回出題
  • 分野:午前II
  • 効く範囲は選択リスト全体であって、直後の1列だけではない。