MySQLのSELECT文でIF()関数を使う方法【条件分岐の実例付き】
MySQLのIF()関数は、指定した条件に基づいて値を返す関数です。条件が真(TRUE)の場合と偽(FALSE)の場合で、それぞれ異なる値を返すことができ、SELECT文の中で手軽に条件分岐を実現できます。
IF()関数の基本構文
IF()関数の構文は以下の通りです。
SELECT IF(条件, 条件が真の場合に返す値, 条件が偽の場合に返す値) FROM テーブル名;
サンプルテーブルの作成
まず、動作確認用のテーブルを作成しましょう。
mysql> create table DemoTable
(
Value int
);
Query OK, 0 rows affected (0.60 sec)
レコードの挿入
insertコマンドを使って、テーブルにレコードを挿入します。
mysql> insert into DemoTable values(1000); Query OK, 1 row affected (0.16 sec) mysql> insert into DemoTable values(2000); Query OK, 1 row affected (0.16 sec) mysql> insert into DemoTable values(500); Query OK, 1 row affected (0.20 sec) mysql> insert into DemoTable values(1100); Query OK, 1 row affected (0.16 sec)
テーブルの内容を確認する
select文ですべてのレコードを表示してみましょう。
mysql> select *from DemoTable;
実行結果は以下の通りです。
+-------+ | Value | +-------+ | 1000 | | 2000 | | 500 | | 1100 | +-------+ 4 rows in set (0.00 sec)
IF()関数を使ったクエリの実行例
ここで、MySQLのSELECT文でIF()関数を実際に使ってみます。Valueの値が1000より大きいかどうかを判定し、結果に応じたメッセージを表示するクエリです。
mysql> select Value,IF(Value > 1000, CONCAT(Value,' is greater than 1000'),CONCAT(Value,' is lower than 1000')) AS Result from DemoTable;
実行結果は以下の通りです。
+-------+---------------------------+ | Value | Result | +-------+---------------------------+ | 1000 | 1000 is lower than 1000 | | 2000 | 2000 is greater than 1000 | | 500 | 500 is lower than 1000 | | 1100 | 1100 is greater than 1000 | +-------+---------------------------+ 4 rows in set (0.00 sec)
このクエリでは、Valueが1000より大きい場合はCONCAT関数で「is greater than 1000」というメッセージを連結し、そうでない場合は「is lower than 1000」というメッセージを返しています。Valueがちょうど1000の行は「1000より大きい」という条件を満たさないため、「lower than(1000未満)」側のメッセージが表示される点に注意してください。
このようにIF()関数を使えば、SQL文の中で簡単に条件分岐処理を記述でき、数値の大小判定やステータスの表示切り替えなど、さまざまな場面で活用できます。
-
MySQLでSELECT文の中にCASE式を使う方法を解説
MySQLでは、SELECT文の中でCASE WHEN式を使うことで、条件に応じた値を返すことができます。本記事では、具体的なサンプルを使いながら、その基本的な使い方をわかりやすく解説します。1. サンプルテーブルの作成まず、デモ用のテーブルを作成します。mysql> create table DemoTable -> ( -> FirstName varchar(20), -> Score int -> );Query OK, 0 rows affected (0.63 sec)2. テストデータの挿入INSERTコマンドを使って、いくつか
-
MySQLのUPDATE文の中でSELECTステートメントを使う方法
MySQLでUPDATEコマンドを実行する際に、同じテーブルを参照するSELECTステートメントを組み合わせたいケースはよくあります。しかし、UPDATE文の中で直接サブクエリとして対象テーブルを指定するとエラーになるため、工夫が必要です。解決策:サブクエリとWHERE句を組み合わせるこの問題を回避するには、WHERE句とともにサブクエリを使用し、さらにそのサブクエリを別のSELECT文でラップ(派生テーブル化)します。これにより、MySQLは一時的なテーブルとして扱うため、更新中のテーブルへの参照エラーを防ぐことができます。実際の手順を順番に見ていきましょう。1. テーブルを作成するまず、サ