SQLでSELECT文による検索結果から重複を除去するクエリを紹介します。
SQLのSELECTの結果から重複を除去する場合は DISTINCT文を用います。
下記のテーブルでの例を紹介します。
| id | category | products |
|---|---|---|
| 1 | キャンディ | クールキャンディ |
| 2 | チョコレート | カカオ99.9% |
| 3 | ケーキ | みるくDeショート |
| 4 | キャンディ | もふもふキャンディ |
| 5 | キャンディ | レモンですっぱー |
| 6 | チョコレート | マカダミアンナッツチョコ |
上記のテーブルがある場合、下記のSQLクエリを実行します。
SELECT category FROM Products
結果は以下となります。
| category |
|---|
| キャンディ |
| チョコレート |
| ケーキ |
| キャンディ |
| キャンディ |
| チョコレート |
先ほどの結果で同じ値のレコードを複数取得したくない場合は distinct 文を利用します。
SELECT DISTINCT category FROM Products
上記のSQLを実行すると、下記の結果となります。
| category |
|---|
| キャンディ |
| チョコレート |
| ケーキ |
重複が除去できていることが確認できます。
下記のテーブルでの例を紹介します。
| 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% |
| チョコレート | マカダミアンナッツチョコ |