MySQL の DISTINCT
ここでは MySQL の DISTINCT についてご説明します。
サンプルデータベースのテーブルを使いますので、実際にスクリプトを実行してみたい方は、こちら のスクリプトを実行して school_db データベースを作成しておいてください。
MySQL の DISTINCT の使い方
SELECT 文の SELECT に続いて DISTINCT と指定することで、結果セットで値が重複するものを削除し、ユニークなレコードのみを取得することができます。
SELECT DISTINCT
カラム名1,
カラム名2,
...
FROM テーブル名
NULL もひとつの値のように扱われ、結果セットに含まれます。
それでは、DISTINCT を使ってデータを取得してみましょう。
次のような students テーブルがあります。
students テーブルの gender カラムに保存されている、ユニークな値を取得するには、次のようにできます。
SELECT DISTINCT
gender
FROM students;
[実行結果]
students テーブルの gender カラムには M と F という値が存在していることがわかります。
次は複数のカラムの DISTINCT なレコードを取得してみます。
MySQL の YEAR()関数を使うと、日付の年だけが取得できます。
その関数を使って、students テーブルから、性別と生まれ年のレコード取得すると次のようになります。
SELECT gender,
YEAR(birthday) AS birth_year
FROM students
ORDER BY gender,
birth_year;
これに DISTINCT を追加すると重複データが削除され、性別と生まれ年のユニークなレコード取得が取得できます。
SELECT DISTINCT
gender,
YEAR(birthday) AS birth_year
FROM students
ORDER BY gender,
birth_year;
[実行結果]
以上、MySQL の DISTINCT についてご説明しました。