SQL

【SQL】DISTINCTの使い方(重複データ除外)

2021年1月19日

DISTINCTの基本構文

SQLのDISTINCTを使うと、重複したデータを除外できます。

DISTINCTの基本構文

SELECT DISTINCT 列名 FROM テーブル名 WHERE 条件;

本記事では「DISTINCT」を使い、重複データを除外する方法を解説していきます。

また、下記の「userテーブル」に次のようなデータが格納されていることを前提としています。

【userテーブル】

ID (id)名前 (name)住所 (address)年齢 (age)部署ID (department_id)
202000001鈴木一郎東京都441
202000002佐藤次郎埼玉県321
202000003田中三郎千葉県243
202000004伊藤四郎東京都222
202000005斎藤五郎東京都552

スポンサーリンク

DISTINCTの使い方

DISTINCTを使い重複データを除外する

例えば、次のように「部署コード」を取得するSQLがある場合、"1"と"3"が重複しています。

■DISTINCTを使わない場合の例

SELECT department_id FROM user;

■実行結果

+---------------+
| department_id |
+---------------+
|             1 |
|             1 |
|             3 |
|             2 |
|             2 |
+---------------+
5 rows in set (0.00 sec)

これに対して、「DISTINCT」を使うと重複したデータを除外できます。

■DISTINCTを使った場合の例

SELECT DISTINCT department_id FROM user;

■実行結果

+---------------+
| department_id |
+---------------+
|             1 |
|             3 |
|             2 |
+---------------+
3 rows in set (0.00 sec)

列名の前に「DISTINCT」を追加することで、重複データが除外されました。

複数の列(カラム)を対象に重複データを除外する

「DISTINCT」は複数の列(カラム)に対しても使用できます。

例えば、次のように「住所」と「部署ID」を取得するSQLの場合、「住所」が"東京都"で「部署ID」が"2"のデータが重複しています。

■DISTINCTを使わない場合の例

SELECT address, department_id FROM user;

■実行結果

+---------+---------------+
| address | department_id |
+---------+---------------+
| 東京都  |             1 |
| 埼玉県  |             1 |
| 千葉県  |             3 |
| 東京都  |             2 |
| 東京都  |             2 |
+---------+---------------+
5 rows in set (0.00 sec)

これに対して、「DISTINCT」を使うと重複したデータを除外できます。

■DISTINCTを使った場合の例

SELECT DISTINCT address, department_id FROM user;

■実行結果

+---------+---------------+
| address | department_id |
+---------+---------------+
| 東京都  |             1 |
| 埼玉県  |             1 |
| 千葉県  |             3 |
| 東京都  |             2 |
+---------+---------------+
4 rows in set (0.00 sec)

helpful