SQL入門その10 - SELECT DISTINCT文による重複データを取除く
2008/02/16 15:58Update
SQLでは、データを問い合わせするにはSELECTコマンドを使います。通常SELECT文での問い合わせ結果には重複行が含まれることがあります。こうした検索内容から重複する行を取除くためには、SELECT DISTINCTを使います。
SELECT DISTINCTを使用すると、重複行を削除してくれます。
SELECT DISTINCTの基本構文は、以下のようになります。
SELECT DISTINCT <列名1> [, 列名2 ...] FROM <テーブル名> [WHERE条件式など]
※※ <>は必須、[]はオプション構文との意味です。
※※ DISTINCTで重複を抑制しているのは SELECT文で得られた行データであって、言い換えると、SELECT文に含まれる全列名の組み合わせで重複データはないこと、単独列のみの重複ではないことに注意してください。
では、早速試しましょう。
※実際のテストはMySQLを使って行います。
仮に、次のテーブルUSER_MST:
| ID | NAME | NICK_NAME | AGE |
|---|---|---|---|
| 1 | Mike | Jack | 20 |
| 2 | Jackson | Jack | 21 |
| 3 | Juli | Sam | 22 |
| 4 | Samon | Sam | 22 |
mysql>SELECT DISTINCT NICK_NAME FROM USER_MST;
+---------+
|NICK_NAME|
+---------+
| Jack |
| Sam |
+---------+
2 rows in set (0.00 sec)
mysql>
NICK_NAME列の重複がないデータ2件を取得しました。+---------+
|NICK_NAME|
+---------+
| Jack |
| Sam |
+---------+
2 rows in set (0.00 sec)
mysql>
mysql>SELECT DISTINCT NICK_NAME, AGE FROM USER_MST;
+---------+---+
|NICK_NAME|AGE|
+---------+---+
| Jack |20 |
| Jack |21 |
| Sam |22 |
+---------+---+
3 rows in set (0.00 sec)
mysql>
NICK_NAMEとAGEの組み合わせで重複がないデータ3件を取得しました。+---------+---+
|NICK_NAME|AGE|
+---------+---+
| Jack |20 |
| Jack |21 |
| Sam |22 |
+---------+---+
3 rows in set (0.00 sec)
mysql>
その他関連記事
SQL入門その2 - データの問い合わせSELECT文の基本的な使い方
Sponsored Link
- Relative Articles
- SQL入門その1 - SQLとは - (2007/10/30 10:42)
- SQL入門その2 - データの問い合わせSELECT文の基本的な使い方 - (2007/10/30 12:42)
- SQL入門その3 - データの更新UPDATE文の基本的な使い方 - (2007/11/05 16:07)
- SQL入門その4 - データの削除DELETE文の基本的な使い方 - (2007/11/05 16:28)
- SQL入門その5 - データの登録INSERT文の基本的な使い方 - (2007/11/05 17:21)
- SQL入門その6 - テーブルの作成CREATE TABLE文の基本的な使い方 - (2007/11/06 14:42)
- SQL入門その7 - インデックスの作成CREATE INDEX文の基本的な使い方 - (2007/11/07 16:58)
- SQL入門その8 - データベース制約CONSTRAINT - (2007/11/08 15:27)
- SQL入門その9 - テーブルの変更ALTER TABLE文の基本的な使い方 - (2007/11/20 23:37)
- SQL入門その11 - SELECT ... ORDER BY文によるデータの並べ替え - (2008/02/16 18:08)