(最終更新月:2023年11月)
✔このような方へ向けて書かれた記事となります
「MySQLのdistinctってどういう機能なのだろう?」
「MySQLにおけるdistinctの使い方を知りたい」
「MySQLでdistinctを使用する例を見て理解したい」
✔当記事を通じてお伝えすること
- MySQLにおけるdistinctの基本的な特性
- MySQLでdistinctを使う方法・その応用例
- distinctの実装例
当記事では、MySQLにおけるdistinctの基本的な概略からその具体的な使用方法、更には応用例まで、詳細に渡り解説しています。
是非、最後までご覧ください。
SQLのDISTINCTとは
DISTINCT句は、SQLクエリの結果から重複する行を削除するために使用されるもの。
一意の結果セットを返すために使われます。
DISTINCTキーワードの詳細
DISTINCTキーワードをより深く探るため、基本的な構文から複数のカラムへの適用方法まで、幅広く説明します。
- DISTINCT基本構文の理解
- 1つのカラムにDISTINCTを適用した場合
- 複数のカラムにDISTINCTを適用した場合
DISTINCT基本構文の理解
基本的なDISTINCTの構文は以下のとおりです。
SELECT DISTINCT column_name FROM table_name;
このクエリは、指定されたカラムの一意の値のみを返します。
1つのカラムにDISTINCTを適用した場合
単一のカラムにDISTINCTを適用すると、そのカラム内の重複データが排除されたうえで、結果が得られます。
以下は、employees
テーブルのdepartment
カラムから一意の部門名を取得する例です。
SELECT DISTINCT department FROM employees;
複数のカラムにDISTINCTを適用した場合
複数のカラムにDISTINCTを適用する場合、その組み合わせが一意である行のみが結果として返されます。
employees
テーブルから、異なるposition
とdepartment
の組み合わせを取得するクエリは以下のとおりです。
SELECT DISTINCT position, department FROM employees;
実例を通じたDISTINCTの解説
こちらでは、実際のSQLクエリを用いて、DISTINCTの使い方とその結果を詳しく解説します。
具体的な例を通じて、DISTINCTの動作をより深く理解する手助けとなるでしょう。
- 標準SQLによるサンプルコード
- 複数のカラム値を持つ場合のサンプルコード
標準SQLによるサンプルコード
例として、products
テーブルから一意の商品カテゴリを取得するクエリは以下のようになります。
SELECT DISTINCT category FROM products;
重複するカテゴリなしに、各商品カテゴリが一覧表示されます。
複数のカラム値を持つ場合のサンプルコード
products
テーブルから、異なるcategory
とsub_category
の組み合わせを取得するクエリは以下のようになります:
SELECT DISTINCT category, sub_category FROM products;
category
とsub_category
の一意な組み合わせが表示されます。
同じカテゴリ内の異なるサブカテゴリを効果的に確認可能です。
関数とDISTINCTの併用
こちらでは、DISTINCTキーワードを関数と組み合わせて使用する方法について詳しく解説します。
これにより、データの集計や分析をより効率的におこなえるでしょう。
- DISTINCTとCOUNT
- DISTINCTとした場合のAVG、SUM
DISTINCTとCOUNT
DISTINCTをCOUNT関数と併用することで、一意な値の数をカウントできます。
- ひとつのカラムのレコード数取得
- 複数のカラムのレコード数取得
ひとつのカラムのレコード数取得
products
テーブルの一意な商品カテゴリの数を取得する例です。
SELECT COUNT(DISTINCT category) FROM products;
商品カテゴリの一意な値の数が返されます。
複数のカラムのレコード数取得
products
テーブルから、異なるcategory
とsub_category
の組み合わせの数を取得するクエリは以下のとおりです。
SELECT COUNT(DISTINCT category, sub_category) FROM products;
このクエリを実行すると、category
とsub_category
の一意な組み合わせの数が返されます。
DISTINCTとした場合のAVG、SUM
DISTINCTキーワードは、AVGやSUMなどの集計関数とも併用できます。
これにより、重複を排除した上での平均や合計を算出することが可能です。
- DISTINCTとAVG
- DISTINCTとSUM
DISTINCTとAVG
sales
テーブルにおける一意な商品価格の平均を計算する例は、こちらです。
SELECT AVG(DISTINCT price) FROM sales;
このクエリは、一意なprice
の平均値を返します。
DISTINCTとSUM
また、特定の期間内での一意な商品価格の合計を計算する場合は、次のようなクエリを使用します。
SELECT SUM(DISTINCT price) FROM sales WHERE sale_date BETWEEN '2023-01-01' AND '2023-12-31';
2023年の間での一意なprice
の合計値を返します。
まとめ: DISTINCTの全体像
当記事では、MySQLのDISTINCTキーワードについて学習してきました。
- DISTINCTキーワードは、SQLクエリの結果から重複する行を排除する強力なツール
- DISTINCTを適切に活用することで、データの一貫性を保ちつつ、必要な情報のみを効率的に取得できる
- 関数と組み合わせることで、データの集計や分析をさらに強化できる
DISTINCTの理解と正しい活用は、データベース操作の基本的なスキルのひとつといえるでしょう。
これをマスターすることで、より高度なデータ操作や分析が可能となります。