MySQLでDistinct句を使う方法|実例付きで徹底解説

※本サイトにはプロモーション・広告が含まれています。

(最終更新月:2023年11月)

✔このような方へ向けて書かれた記事となります

「MySQLのdistinctってどういう機能なのだろう?」

「MySQLにおけるdistinctの使い方を知りたい」

「MySQLでdistinctを使用する例を見て理解したい」

✔当記事を通じてお伝えすること

  • MySQLにおけるdistinctの基本的な特性
  • MySQLでdistinctを使う方法・その応用例
  • distinctの実装例

当記事では、MySQLにおけるdistinctの基本的な概略からその具体的な使用方法、更には応用例まで、詳細に渡り解説しています。

是非、最後までご覧ください。

筆者プロフィール

筆者プロフィールアイコン

【現職】プロダクトマネージャー

【副業】ブログ(月間17万PV)/YouTube/Web・アプリ制作

「プログラミング × ライティング × 営業」の経験を活かし、30後半からのIT系職へシフト。当サイトでは、実際に手を動かせるWebアプリの開発を通じて、プログラミングはもちろん、IT職に必要な情報を提供していきます。

【当ブログで紹介しているサイト】

当サイトチュートリアルで作成したデモ版日報アプリ

Django × Reactで開発したツール系Webアプリ

✔人に見せても恥ずかしくないコードを書こう

「リーダブルコード」は、わかりやすく良いコードの定義を教えてくれる本です。

  • 見るからにきれいなコードの書き方
  • コードの分割方法
  • 変数や関数の命名規則

エンジニアのスタンダートとすべき基準を一から解説しています。

何回も読むのに値する本なので、ぜひ手にとって読んでみてください。

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テーブルから、異なるpositiondepartmentの組み合わせを取得するクエリは以下のとおりです。

SELECT DISTINCT position, department FROM employees;

実例を通じたDISTINCTの解説

こちらでは、実際のSQLクエリを用いて、DISTINCTの使い方とその結果を詳しく解説します。

具体的な例を通じて、DISTINCTの動作をより深く理解する手助けとなるでしょう。

  • 標準SQLによるサンプルコード
  • 複数のカラム値を持つ場合のサンプルコード

標準SQLによるサンプルコード

例として、productsテーブルから一意の商品カテゴリを取得するクエリは以下のようになります。

SELECT DISTINCT category FROM products;

重複するカテゴリなしに、各商品カテゴリが一覧表示されます。

複数のカラム値を持つ場合のサンプルコード

productsテーブルから、異なるcategorysub_categoryの組み合わせを取得するクエリは以下のようになります:

SELECT DISTINCT category, sub_category FROM products;

categorysub_categoryの一意な組み合わせが表示されます。

同じカテゴリ内の異なるサブカテゴリを効果的に確認可能です。

関数とDISTINCTの併用

こちらでは、DISTINCTキーワードを関数と組み合わせて使用する方法について詳しく解説します。

これにより、データの集計や分析をより効率的におこなえるでしょう。

  • DISTINCTとCOUNT
  • DISTINCTとした場合のAVG、SUM

DISTINCTとCOUNT

DISTINCTをCOUNT関数と併用することで、一意な値の数をカウントできます。

  • ひとつのカラムのレコード数取得
  • 複数のカラムのレコード数取得

ひとつのカラムのレコード数取得

productsテーブルの一意な商品カテゴリの数を取得する例です。

SELECT COUNT(DISTINCT category) FROM products;

商品カテゴリの一意な値の数が返されます。

複数のカラムのレコード数取得

productsテーブルから、異なるcategorysub_categoryの組み合わせの数を取得するクエリは以下のとおりです。

SELECT COUNT(DISTINCT category, sub_category) FROM products;

このクエリを実行すると、categorysub_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の理解と正しい活用は、データベース操作の基本的なスキルのひとつといえるでしょう。

これをマスターすることで、より高度なデータ操作や分析が可能となります。

タイトルとURLをコピーしました