カテゴリ: PostgreSQL 更新日: 2026/03/04

PostgreSQLのDISTINCT完全ガイド|SQLで重複データを除外する方法を初心者向けに解説

PostgreSQLのDISTINCTで重複を除外する方法
PostgreSQLのDISTINCTで重複を除外する方法

先生と生徒の会話形式で理解しよう

生徒

「データベースを見ていたら、同じ名前や同じ年齢が何回も出てきて混乱しました。これって普通なんですか?」

先生

「よくありますよ。データベースでは、同じ値を持つ行が複数入ることがあります。そんなときに使うのがDISTINCTです。」

生徒

「DISTINCTって何をするものなんですか?」

先生

「SELECTでデータを取り出すときに、同じ内容を一つにまとめて表示してくれる命令です。名簿で同じ名前を一回だけ読み上げるようなイメージですね。」

生徒

「パソコンをほとんど触ったことがなくても使えますか?」

先生

「大丈夫です。表を目で見て確認しながら、一つずつ説明します。」

1. PostgreSQLとSQLの基本をやさしく理解しよう

1. PostgreSQLとSQLの基本をやさしく理解しよう
1. PostgreSQLとSQLの基本をやさしく理解しよう

PostgreSQLは、たくさんのデータを表の形で保存できるデータベースです。データベースは、紙のノートや名簿をデジタル化したような箱だと考えてください。その箱の中身を操作するための言葉がSQLです。

SQLには、データを見るためのSELECT、追加するINSERT、変更するUPDATE、削除するDELETEなどがあります。今回解説するDISTINCTは、SELECTと一緒に使う命令で、表示されるデータの重複をなくす役割を持っています。

2. 重複データとは何かを具体例で理解する

2. 重複データとは何かを具体例で理解する
2. 重複データとは何かを具体例で理解する

重複データとは、同じ値が何度も出てくる状態のことです。例えば、年齢一覧を表示したときに、25歳が何行も表示される場合、それは重複している状態です。

まずは、usersテーブルの中身を見てみましょう。


id | name       | age | email
---+------------+-----+-----------------------
1  | 山田太郎   | 25  | taro@example.com
2  | 佐藤花子   | 19  | hanako@example.com
3  | 鈴木一郎   | 25  | ichiro@example.com
4  | 田中次郎   | 30  | jiro@example.com
5  | 山本美咲   | 19  | misaki@example.com

この表では、ageの25や19が複数回登場しています。このままSELECTすると、同じ年齢が何度も表示されます。

3. DISTINCTの基本的な使い方

3. DISTINCTの基本的な使い方
3. DISTINCTの基本的な使い方

DISTINCTは「区別する」「重複をなくす」という意味の英単語です。SQLでは、SELECT DISTINCT 列名 の形で使います。


SELECT DISTINCT age
FROM users;

このSQLを実行すると、年齢が重複しない形で表示されます。


age
----
25
19
30

紙の名簿で、年齢の種類だけを一覧にする感覚と同じです。同じ年齢は一回だけ表示されます。

4. DISTINCTとSELECTの違いを比べてみよう

4. DISTINCTとSELECTの違いを比べてみよう
4. DISTINCTとSELECTの違いを比べてみよう

次に、DISTINCTを使わない場合と使った場合を比べてみます。


SELECT age
FROM users;

age
----
25
19
25
30
19

このように、DISTINCTを使わないと、テーブルに入っている行の数だけ表示されます。DISTINCTを使うことで、一覧として見やすくなり、データの特徴をつかみやすくなります。

5. 複数の列にDISTINCTを使う方法

5. 複数の列にDISTINCTを使う方法
5. 複数の列にDISTINCTを使う方法

DISTINCTは一つの列だけでなく、複数の列をまとめて重複チェックすることもできます。


SELECT DISTINCT age, name
FROM users;

この場合、年齢と名前の組み合わせが同じ行だけが重複として扱われます。どちらか一方でも違えば、別の行として表示されます。

名簿で「名前と年齢のセット」が同じ人を一人として数えるイメージです。

6. DISTINCTとWHEREを組み合わせて使う

6. DISTINCTとWHEREを組み合わせて使う
6. DISTINCTとWHEREを組み合わせて使う

DISTINCTは、WHEREと一緒に使うこともできます。まず条件で絞り込み、その結果から重複を除外します。


SELECT DISTINCT age
FROM users
WHERE age >= 20;

age
----
25
30

20歳以上の人だけを対象にして、年齢の種類を一覧で表示しています。条件と重複除外を組み合わせることで、知りたい情報だけをすっきり確認できます。

7. DISTINCTを使うときの注意点

7. DISTINCTを使うときの注意点
7. DISTINCTを使うときの注意点

DISTINCTは便利ですが、すべての場面で使えばよいわけではありません。元のデータの行数を確認したいときや、一人ずつの詳細を見たいときには向いていません。

また、列が多くなるほど、どこが重複しているのか分かりにくくなります。初心者のうちは、一つか二つの列で使うことを意識すると理解しやすくなります。

8. DISTINCTはどんな場面で役立つのか

8. DISTINCTはどんな場面で役立つのか
8. DISTINCTはどんな場面で役立つのか

DISTINCTは、一覧表や集計前の確認で特に役立ちます。年齢の種類、都道府県の種類、カテゴリの一覧など、同じ値をまとめて見たいときに使います。

データベース操作に慣れてくると、「まずDISTINCTで中身を確認する」という使い方も増えてきます。初心者にとっては、データの全体像をつかむための心強い味方です。

カテゴリの一覧へ
新着記事
New1
PostgreSQL
PostgreSQLのLIMIT・OFFSETとパフォーマンス問題を完全解説|初心者でもわかる安全な使い方
New2
MySQL
MySQLのUPDATE文でデータを更新する基本を徹底解説|SQL初心者でもわかるデータベース更新入門
New3
PostgreSQL
PostgreSQLのOFFSET完全入門|並び替えと組み合わせてデータをスキップする方法を初心者向けに解説
New4
MySQL
MySQLで複数行INSERTを行う方法と注意点を徹底解説|SQL基礎から学ぶデータベース入門
人気記事
No.1
Java&Spring記事人気No1
PostgreSQL
PostgreSQLのDISTINCT完全ガイド|SQLで重複データを除外する方法を初心者向けに解説
No.2
Java&Spring記事人気No2
PostgreSQL
PostgreSQLの主キー・外部キーを完全解説!初心者でもわかる設定方法と考え方
No.3
Java&Spring記事人気No3
PostgreSQL
PostgreSQLのUPDATE文の使い方(部分更新・条件更新)
No.4
Java&Spring記事人気No4
PostgreSQL
PostgreSQLのLEFT JOIN完全入門!不足データを補いながらテーブル結合する仕組みをやさしく解説
No.5
Java&Spring記事人気No5
PostgreSQL
PostgreSQLとは?初心者向けに特徴をわかりやすく解説
No.6
Java&Spring記事人気No6
PostgreSQL
PostgreSQLスキーマ設計のベストプラクティス完全ガイド|初心者でもわかるデータベース整理術
No.7
Java&Spring記事人気No7
PostgreSQL
PostgreSQLのpublicスキーマの役割と扱い方
No.8
Java&Spring記事人気No8
PostgreSQL
PostgreSQLスキーマ作成・削除完全ガイド!初心者でもわかるデータベース設計の基礎