SELECTによる検索結果から重複を除去する (DISTINCT文の利用) - SQL

SQLでSELECT文による検索結果から重複を除去するクエリを紹介します。

概要

SQLのSELECTの結果から重複を除去する場合は DISTINCT文を用います。

書式

SELECT DISTINCT ......

例1

下記のテーブルでの例を紹介します。
Productsテーブル
idcategoryproducts
1キャンディクールキャンディ
2チョコレートカカオ99.9%
3ケーキみるくDeショート
4キャンディもふもふキャンディ
5キャンディレモンですっぱー
6チョコレートマカダミアンナッツチョコ

DISTINCT を利用しない場合

上記のテーブルがある場合、下記のSQLクエリを実行します。
SELECT category FROM Products

結果は以下となります。
category
キャンディ
チョコレート
ケーキ
キャンディ
キャンディ
チョコレート

重複を除去するSQL

先ほどの結果で同じ値のレコードを複数取得したくない場合は distinct 文を利用します。
SELECT DISTINCT category FROM Products

結果

上記のSQLを実行すると、下記の結果となります。
category
キャンディ
チョコレート
ケーキ
重複が除去できていることが確認できます。

例2:複数列の場合

下記のテーブルでの例を紹介します。
Productsテーブル
idcategoryproduct_name
1キャンディクールキャンディ
2チョコレートカカオ99.9%
3ケーキみるくDeショート
4キャンディもふもふキャンディ
5キャンディレモンですっぱー
6チョコレートマカダミアンナッツチョコ
7チョコレートカカオ99.9%

上記のテーブルで下記のSQLを実行します。
SELECT DISTINCT category, product_name FROM Products

結果

上記のSQLを実行すると、下記の結果となります。
selectで抽出される列の値がすべて同じものが重複と判定されます。今回の場合、category="チョコレート", product_name="カカオ99.9%" の行が2レコード該当したため、この2レコードが集約されて1レコードにまとめられています。

categoryproduct_name
キャンディクールキャンディ
キャンディもふもふキャンディ
キャンディレモンですっぱー
ケーキみるくDeショート
チョコレートカカオ99.9%
チョコレートマカダミアンナッツチョコ

著者
iPentec.com の代表。ハードウェア、サーバー投資、管理などを担当。
Office 365やデータベースの記事なども担当。
最終更新日: 2024-04-06
作成日: 2011-06-03
iPentec all rights reserverd.