MySQLでフィールドがNULLの場合に別のフィールドの値を取得する方法(COALESCE関数の使い方)
MySQLでは、COALESCE()関数を使うことで、指定したフィールドがNULLだった場合に、代わりに別のフィールドの値を取得できます。COALESCE()は、引数として渡された値の中から最初に見つかったNULL以外の値を返す関数です。
1. サンプルテーブルの作成
まず、以下のコマンドでテーブルを作成します。
mysql> create table DemoTable1470
-> (
-> FirstName varchar(20),
-> Age int
-> );
Query OK, 0 rows affected (0.57 sec)
2. レコードの挿入
INSERTコマンドを使って、いくつかのレコードを追加します。意図的にNULLを含むデータも登録している点に注目してください。
mysql> insert into DemoTable1470 values('Robert',23);
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable1470 values('Bob',NULL);
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable1470 values(NULL,25);
Query OK, 1 row affected (0.15 sec)3. テーブルの内容を確認する
SELECT文でテーブル内のすべてのレコードを表示してみましょう。
mysql> select * from DemoTable1470;
実行結果は以下のとおりです。
+-----------+------+
| FirstName | Age |
+-----------+------+
| Robert | 23 |
| Bob | NULL |
| NULL | 25 |
+-----------+------+
3 rows in set (0.00 sec)
4. COALESCE()でNULLの場合に別のフィールドを選択する
以下のクエリでは、FirstNameがNULLの場合に、代わりにAgeの値を返しています。
mysql> select coalesce(FirstName,Age) as FirstNameOrAgeValue from DemoTable1470;
実行結果は次のようになります。
+---------------------+
| FirstNameOrAgeValue |
+---------------------+
| Robert |
| Bob |
| 25 |
+---------------------+
3 rows in set (0.00 sec)
まとめ
COALESCE()は複数の引数を受け取ることができ、左から順に評価して最初のNULL以外の値を返します。上記の例では、FirstNameが「Robert」や「Bob」の場合はその名前がそのまま返され、NULLの場合はAgeの値である「25」が返されています。
なお、似たような用途にはIFNULL()関数もありますが、IFNULL()は引数を2つしか取れないのに対し、COALESCE()は3つ以上のフィールドにも対応できるため、より柔軟なNULL処理を実現できます。表示用のデータ整形やレポート作成時に、欠損値を補完したいケースでぜひ活用してください。
-
MySQLでSELECTクエリを使用してデータを挿入(INSERT)する方法
MySQLでは、INSERT文とSELECTクエリを組み合わせることで、テーブルにデータを挿入することができます。通常、SELECTは既存のテーブルからデータを取得するために使われますが、値を直接指定してINSERTを実行する際にも活用できる便利な手法です。基本構文SELECTクエリを使用してINSERTを実行する場合の構文は以下の通りです。insert into yourTableName(yourColumnName1,yourColumnName2,yourColumnName3,...N) select yourValue1,yourValue2,yourValue3,......N;
-
MySQLでGROUP BYを使ってグループ化し合計(SUM)を求める方法
MySQLで合計を求めるには、集計関数SUM()を使用します。さらにGROUP BY句と組み合わせることで、特定のカラムごとにデータをグループ化し、それぞれのグループの合計値を取得できます。この記事では、商品名ごとに「数量 × 価格」の合計を求める例を通じて、GROUP BYとSUM()の基本的な使い方を解説します。 1. サンプルテーブルの作成 まず、以下のようにテーブルを作成します。 mysql> create table DemoTable -> ( -> ProductName varchar(20), -> ProductQuant