SELECT DISTINCTで重複をなくし(一意の値)表示する!SQL超初心者の勉強

DISTINCTを使うと一意の値を簡単に取得することができます。
SELECTの後ろにDISTINCTとつけるだけなのでGROUP BYより簡単に取得することができます。

動作環境

この記事はSQL FIDDLEでMySQL5.6、PostgreSQL9.6、SQLiteで動作確認しました。
下記文章は主にPostgreSQLで仕様で調べています。

DISTINCTで一意の値を表示しよう

サンプルコードで実際にDISTINCTの動きを確認してみましょう。

準備

以下の内容のテーブルを使用します。

ItemIDItemNameQuantityAREA
1プリン25大阪
2ゼリー20大阪
3ゼリー30東京
4プリン15大阪
5プリン60東京
6プリン25大阪
7ゼリー20東京
item テーブル

上記テーブルの作成用コードです。

-- CREATE文 item テーブル
CREATE TABLE item (
ItemID numeric(8, 0) unique not null,
ItemName character varying (20),
Quantity numeric(8, 0),
AREA character varying (20),
primary key(ItemID)
);
-- itemテーブル用INSERT文
insert into item
values(0001, 'プリン', 25, '大阪'),
(0002, 'ゼリー', 20, '大阪'),
(0003, 'ゼリー', 30, '東京'),
(0004, 'プリン', 15,'大阪'),
(0005, 'プリン', 60, '東京'),
(0006, 'プリン', 25, '大阪'),
(0007, 'ゼリー', 20, '東京');

1カラムで一意の値を取得

ItemNameで一意の値を表示します。

SELECT DISTINCT
ItemName
FROM item;

■ 結果

ItemName
プリン
ゼリー

複数カラムの組み合わせで一意の値を取得

通常のSELECT文と同じように書くだけです。

SELECT DISTINCT
ItemName
,AREA
FROM item;

■ 結果

ItemNameAREA
プリン大阪
ゼリー大阪
ゼリー東京
プリン東京

おわり

簡単すぎてGROUP BY使う気になれないですね。

関連:重複の件数を出す方法はこちらにまとめています。