MySQLで条件に基づいて新しい列(結果列)を追加し、値を設定する方法
MySQLでは、IF()関数を使うことで、指定した条件に基づいて異なる値を返す「仮想的な新しい列」を作成できます。テーブルの構造を変更することなく、SELECT文の中で動的に結果列を生成できるのが特徴です。
ここでは、「年齢(Age)が18歳より大きいかどうか」を判定し、合否の結果を新しい列として表示する例を紹介します。
1. サンプルテーブルの作成
まず、年齢を格納するテーブルを作成します。
mysql> create table DemoTable
-> (
-> Age int
-> );
Query OK, 0 rows affected (0.55 sec)
2. テーブルへのデータ挿入
INSERT文を使って、いくつかのレコードを登録しましょう。
mysql> insert into DemoTable values(19);
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable values(16);
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable values(17);
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable values(22);
Query OK, 1 row affected (0.19 sec)
3. 登録データの確認
SELECT文ですべてのレコードを表示して確認します。
mysql> select *from DemoTable;
実行結果は以下のとおりです。
+------+
| Age |
+------+
| 19 |
| 16 |
| 17 |
| 22 |
+------+
4 rows in set (0.00 sec)
4. IF()関数で条件に基づく新しい列を作成
いよいよ本題です。次のクエリでは、IF(条件, 真の場合の値, 偽の場合の値)という構文を使い、Ageが18より大きければ「合格」のメッセージを、そうでなければ「不合格」のメッセージをResult列として出力しています。
mysql> select Age,
if(Age > 18,'You are qualified!','Sorry, you are rejected!') AS Result
from DemoTable;
ASキーワードで「Result」という別名を付けることで、あたかも新しい列が追加されたように結果を表示できます。実行結果は以下のとおりです。
+------+--------------------------+
| Age | Result |
+------+--------------------------+
| 19 | You are qualified! |
| 16 | Sorry, you are rejected! |
| 17 | Sorry, you are rejected! |
| 22 | You are qualified! |
+------+--------------------------+
4 rows in set (0.00 sec)
補足:CASE式との使い分け
同様の処理はCASE式でも実現できます。CASE式は複数の分岐が必要な場合に便利なので、条件が複雑になる場合はこちらの使用も検討するとよいでしょう。
select Age,
case when Age > 18 then 'You are qualified!'
else 'Sorry, you are rejected!' end AS Result
from DemoTable;
このように、IF()関数やCASE式を活用すれば、テーブル定義を変更せずに条件判定の結果を柔軟に表示できます。レポート作成やデータ集計の場面で非常に役立つテクニックなので、ぜひ覚えておきましょう。
-
MySQLで45日後の日付を計算し、新しい列として表示するクエリの書き方
MySQLで45日後の日付を新しい列に表示する方法 日付・時刻型の列に45日を加算し、その結果を元の列とは別の新しい列として表示したい場合は、date_add() 関数を使うのが最も簡単です。ここでは、テーブルの作成からデータの挿入、そして45日を加算するクエリの実行まで、手順を追って解説します。 1. テーブルを作成する まず、DATETIME型の列「DueTime」を持つテーブルを作成します。 mysql> create table DemoTable1930 ( DueTime datetime ); Query OK, 0 rows affected (
-
【MySQL入門】NULL値に応じて新しい列にカスタムテキストを表示する方法
MySQLでは、IF()関数を活用することで、カラムの値がNULLかどうかを判定し、その結果に応じて新しい列に任意のカスタムテキストを表示できます。本記事では、実際のサンプルコードとともにその手順をわかりやすく解説します。1. サンプルテーブルを作成するまず、学生名を格納するシンプルなテーブルを作成しましょう。mysql> create table DemoTable1953 ( StudentName varchar(20) ); Query OK, 0 rows affected (0.00 sec)2. テストデータを挿入する次に、INSERT文を使ってレコ