SQLのSELECT文で用いられるDISTINCTの意味と使い方をわかりやすく1分で解説します。
DISTINCTはSELECTした結果から "重複するレコードを除外する" オプションです。


このページではDISTINCTの構文ルールや利用方法の注意点を解説します。難しい内容ではないので1分ほどでマスターできます。
プログラマー/システムエンジニアを目指す方であれば知らないと恥ずかしい超・基本知識です。是非最後までご覧ください。
SELECT:DISTINCTの構文ルール
SELECT DISTINCT (カラム名)FROM (テーブル名);
DISTINCTはSELECT句で指定するカラム名の前に記述します。
以下のテーブルから、"Department" 列を重複を除外したい場合のサンプルコードがこちら。

SELECT DISTINCT Department FROM MemberList;
"Department" 列の重複が削除され、以下の結果が得られます。


もし、DISTINCTを用いずに単純にSELECTした場合は以下の結果が得られます。
SELECT Department FROM MemberList;

NULLも1種類としてカウント
DISTINCTを用いた場合はNULL値も1種類のデータとしてカウントされます。
例えば、どこにも所属していない社員がいるような場合。

この場合、DISTINCTを用いるとNULLも消えずに選択されます。
SELECT DISTINCT Department FROM MemberList;


NULLを出力したくない場合は、WHERE句でNULLを除外するように指定しましょう。
DISTINCTで複数のカラムを指定する場合
DISTINCTは以下のように複数のカラムを指定することも可能です。
SELECT DISTINCT Name, Department FROM MemberList;

複数のカラムを指定する場合は、指定したカラムの組み合わせがすべて一意に決まるように重複が除かれます。

以上のように、Name列が "山田" かつDepartment列が "営業部" のように、組み合わせの結果が重複しているものが削除されるという点を押さえておきましょう。

初心者にとっては少しだけ難しいかもしれませんが、これだけ覚えればDISTINCTは完璧です。
DISTINCTは先頭のカラムの前にしか記述することができません。
例えば、これはNG例。
SELECT Number, DISTINCT Department FROM MemberList;

Department列の重複だけを削除したいと考えるとこのような使い方をしがちですが、これはSQLの構文ルール違反です。よくあるミスの1つです。
システムエンジニアを目指したい方は
システムエンジニアを目指す方や、IT知識を1から身につけたい方は以下のページをご覧ください。
正直どこから学び始めればよいかわからない。どのように勉強していけば、エンジニアとしてのスキルが磨けるか?が分からない・・・という方は必見です。

システムエンジニア向けに「できるエンジニア」になる方法を1から解説しておりますので、是非ご覧ください。