【SQL】SELECTーDISTINCT(重複レコードの除外)を1分で解説

Database

SQLのSELECT文で用いられるDISTINCTの意味と使い方をわかりやすく1分で解説します。

DISTINCTはSELECTした結果から "重複するレコードを除外する" オプションです。

このページではDISTINCTの構文ルールや利用方法の注意点を解説します。難しい内容ではないので1分ほどでマスターできます。

このページで学べる内容
  • DISTINCTの使い方:構文ルール
  • DISTINCTで複数のカラムを指定する場合
  • DISTINCTの注意点

プログラマー/システムエンジニアを目指す方であれば知らないと恥ずかしい超・基本知識です。是非最後までご覧ください。

スポンサーリンク

SELECT:DISTINCTの構文ルール

SELECT DISTINCT (カラム名)FROM (テーブル名);

DISTINCTはSELECT句で指定するカラム名の前に記述します。

以下のテーブルから、"Department" 列を重複を除外したい場合のサンプルコードがこちら。

SELECT DISTINCT Department 
  FROM MemberList;

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

画像に alt 属性が指定されていません。ファイル名: image-14.png
DISTINCTの実行結果

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

SELECT Department 
  FROM MemberList;

NULLも1種類としてカウント

DISTINCTを用いた場合はNULL値も1種類のデータとしてカウントされます。

例えば、どこにも所属していない社員がいるような場合。

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

SELECT DISTINCT Department 
  FROM MemberList;
DISTINCT:NULLが含まれる場合の実行結果

NULLを出力したくない場合は、WHERE句でNULLを除外するように指定しましょう。

DISTINCTで複数のカラムを指定する場合

DISTINCTは以下のように複数のカラムを指定することも可能です。

SELECT DISTINCT Name, Department 
  FROM MemberList;

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

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

初心者にとっては少しだけ難しいかもしれませんが、これだけ覚えればDISTINCTは完璧です。

DISTINCT は先頭のカラムの前にしか置けない

DISTINCTは先頭のカラムの前にしか記述することができません。

例えば、これはNG例。

SELECT Number, DISTINCT Department 
  FROM MemberList;

Department列の重複だけを削除したいと考えるとこのような使い方をしがちですが、これはSQLの構文ルール違反です。よくあるミスの1つです。

システムエンジニアを目指したい方は

システムエンジニアを目指す方や、IT知識を1から身につけたい方は以下のページをご覧ください。

正直どこから学び始めればよいかわからない。どのように勉強していけば、エンジニアとしてのスキルが磨けるか?が分からない・・・という方は必見です。

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

タイトルとURLをコピーしました