SQL distinct 重複行を表示しないサンプル

SQLのdistinctで重複行を表示しないサンプルです。

目次

サンプル 重複行を表示しない(distinct)
  distinctで複数項目を指定+項目の値が全て重複
  distinctで複数項目を指定+項目の値は全て重複していない
  distinctで指定した項目がnullのとき

重複行を表示しない(distinct)

select  distinct  項目名  from  テーブル名
  • distinctは、項目名で重複行を非表示にします。
  • distinctは、明確なという意味です。

distinctの使用例

次のテーブルがあるとします。

syainテーブル
id name romaji
1 鈴木 suzuki
2 田中 tanaka
3 鈴木 suzuki

SQL文

上記テーブルのnameに対してdistinctを使用します。

select distinct name from syain
where name = "鈴木";

1行目は、distinctを指定しています。

結果

結果は、以下のとおりです。

name
鈴木

1行のみ表示されます。
distinctを指定しない場合は、鈴木が2行表示されます。

distinctで複数項目を指定+項目の値が全て重複

distinctで複数項目を指定し、項目の値が全て重複している場合、重複行は表示されません。

次のテーブルがあるとします。

syainテーブル
id name romaji
1 鈴木 suzuki
2 田中 tanaka
3 鈴木 suzuki

SQL

上記テーブルのnameとromajiに対してdistinctを使用します。

select distinct name,romaji from syain
where name = "鈴木";

1行目は、distinctの横に項目のnameとromajiがあります。

結果

結果は、以下のとおりです。

name romaji
鈴木 suzuki

nameとromajiの値は重複しているので1行のみ表示されます。

distinctで複数項目を指定+項目の値は全て重複していない

distinctで複数項目を指定し、項目の値が全て重複していない場合、その分の行が表示されます。

次のテーブルがあるとします。

syainテーブル
id name romaji
1 鈴木 suzuki
2 田中 tanaka
3 鈴木 suzuki

SQL

上記テーブルのidとnameとromajiに対して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行表示されます。

distinctで指定した項目がnullのとき

distinctで指定した項目がnullのときは、nullを取得します。

次のテーブルがあるとします。nameの値はすべてnullです。

syainテーブル
id name romaji
1   suzuki
2   tanaka
3   suzuki

SQL

上記テーブルのnameに対してdistinctを使用します。

select distinct name from syain;

sqlを実行します。

結果

結果は、以下のとおりです。

name
 

nullで1行表示されます。

関連の記事

SQL 複数の行をまとめる(集約関数/group by/having)
SQL LEFT OUTER JOIN 外部結合のサンプル
SQL 副問合せのサンプル(サブクエリ)

△上に戻る