SQLでSELECT文による検索結果から重複を除去するクエリを紹介します。
概要
SQLのSELECTの結果から重複を除去する場合は DISTINCT文を用います。
書式
例1
下記のテーブルでの例を紹介します。
Productsテーブル
id | category | products |
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テーブル
id | category | product_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レコードにまとめられています。
category | product_name |
キャンディ | クールキャンディ |
キャンディ | もふもふキャンディ |
キャンディ | レモンですっぱー |
ケーキ | みるくDeショート |
チョコレート | カカオ99.9% |
チョコレート | マカダミアンナッツチョコ |
著者
iPentec.com の代表。ハードウェア、サーバー投資、管理などを担当。
Office 365やデータベースの記事なども担当。
最終更新日: 2024-04-06
作成日: 2011-06-03