SQLの重複行を表示しないサンプルです。
distinctを使用します。
目次
distinct
| select distinct 項目名 from テーブル名 |
- 項目名で、重複行を非表示にします。
テストデータ
次のテーブルがあるとします。
| id | name | romaji |
|---|---|---|
| 1 | 鈴木 | suzuki |
| 2 | 田中 | tanaka |
| 3 | 鈴木 | suzuki |
SQL文
上記テーブルに対してdistinctを使用してデータを抽出します。
select distinct name from syain
where name = "鈴木";
1行目は、distinctを指定しています。
結果
結果は、以下のとおりです。
| name |
|---|
| 鈴木 |
1行のみ表示されます。
distinctを指定しない場合は、2行表示されます。
重複する行としない行
| select distinct 項目名1 [,項目名2]・・・from テーブル名 |
- distinctで指定した項目の値が全て重複している場合、重複行は表示されません。
- distinctで指定した項目の値に重複していない値がある場合、その分の行が表示されます。
テストデータ
次のテーブルがあるとします。
| id | name | romaji |
|---|---|---|
| 1 | 鈴木 | suzuki |
| 2 | 田中 | tanaka |
| 3 | 鈴木 | suzuki |
distinctで指定した項目の値が重複する場合
distinctで指定した項目の値が重複する場合です。
select distinct name,romaji from syain
where name = "鈴木";
1行目は、distinctの横に項目のnameとromajiがあります。
結果
結果は、以下のとおりです。
| name | romaji |
|---|---|
| 鈴木 | suzuki |
nameとromajiの値は重複しているので1行のみ表示されます。
distinctで指定した項目の値が重複しない場合
distinctで指定した項目の値が重複しない場合です。
select distinct id,name,romaji from syain
where name = "鈴木";
1行目は、distinctの横に項目のidとnameとromajiがあります。
idの値は重複していません。nameとromajiの値は重複しています。
結果
結果は、以下のとおりです。
| id | name | romaji |
|---|---|---|
| 1 | 鈴木 | suzuki |
| 3 | 鈴木 | suzuki |
重複していない項目「id」があるので2行表示されます。
関連の記事
SQL INSERT文のサンプル
SQL UPDATE文とDELETE文のサンプル
SQL 複数の行をまとめる(集約関数/group by/having)
SQL 外部結合のサンプル(left outer join/right outer join)
SQL 副問合せのサンプル(サブクエリ)
SQL 自己結合のサンプル
SQL 内部結合のサンプル(inner join)
SQL UNIONとUNION ALLのサンプル