MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

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文の中で簡単に条件分岐処理を記述でき、数値の大小判定やステータスの表示切り替えなど、さまざまな場面で活用できます。

  1. 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コマンドを使って、いくつか

  2. MySQLのUPDATE文の中でSELECTステートメントを使う方法

    MySQLでUPDATEコマンドを実行する際に、同じテーブルを参照するSELECTステートメントを組み合わせたいケースはよくあります。しかし、UPDATE文の中で直接サブクエリとして対象テーブルを指定するとエラーになるため、工夫が必要です。解決策:サブクエリとWHERE句を組み合わせるこの問題を回避するには、WHERE句とともにサブクエリを使用し、さらにそのサブクエリを別のSELECT文でラップ(派生テーブル化)します。これにより、MySQLは一時的なテーブルとして扱うため、更新中のテーブルへの参照エラーを防ぐことができます。実際の手順を順番に見ていきましょう。1. テーブルを作成するまず、サ