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

MySQLのSELECTステートメント内でIF()関数を使う方法をわかりやすく解説

SELECTステートメント内でIF()関数を使用するには?

MySQLのIF()関数は、SELECTステートメント内でも問題なく使用できます。方法は簡単で、IF()関数の第1引数に「条件」と「カラム名」を組み合わせて指定するだけです。

IF()関数の基本構文は以下のとおりです。

IF(条件式, 条件が真の場合の値, 条件が偽の場合の値)

理解を深めるために、次の「Students」テーブルのデータを見てみましょう。

mysql> Select * from Students;
+----+-----------+-----------+----------+----------------+
| id | Name      | Country   | Language | Course         |
+----+-----------+-----------+----------+----------------+
| 1  | Francis   | UK        | English  | Literature     |
| 2  | Rick      | USA       | English  | History        |
| 3  | Correy    | USA       | English  | Computers      |
| 4  | Shane     | France    | French   | Computers      |
| 5  | Validimir | Russia    | Russian  | Computers      |
| 6  | Steve     | Australia | English  | Geoinformatics |
| 7  | Rahul     | India     | Hindi    | Yoga           |
| 8  | Harshit   | India     | Hindi    | Computers      |
+----+-----------+-----------+----------+----------------+
8 rows in set (0.00 sec)

IF()関数を使ったクエリの実行例

次に、SELECTステートメント内にIF()関数を組み込んだ以下のクエリを実行します。このクエリでは、学生の名前とコースの詳細を取得しつつ、言語が英語(English)の場合は「Eng_Language」、それ以外の場合は「Other Language」と表示するようにしています。

mysql> Select Name, IF(Language = 'English', "Eng_Language", "Other Language") AS 'Native Language', Course from students;
+-----------+-----------------+----------------+
| Name      | Native Language | Course         |
+-----------+-----------------+----------------+
| Francis   | Eng_Language    | Literature     |
| Rick      | Eng_Language    | History        |
| Correy    | Eng_Language    | Computers      |
| Shane     | Other Language  | Computers      |
| Validimir | Other Language  | Computers      |
| Steve     | Eng_Language    | Geoinformatics |
| Rahul     | Other Language  | Yoga           |
| Harshit   | Other Language  | Computers      |
+-----------+-----------------+----------------+
8 rows in set (0.00 sec)

結果のポイント

出力結果を見ると、Languageカラムの値が「English」である行(Francis、Rick、Correy、Steve)には「Eng_Language」が表示され、それ以外の言語の行(Shane、Validimir、Rahul、Harshit)には「Other Language」が表示されていることがわかります。

このように、IF()関数をSELECTステートメント内で活用すれば、元のテーブルのデータをそのまま表示するだけでなく、条件に応じた値を動的に生成して出力できます。AS句を使って別名を付ければ、結果セットのカラム名も読みやすくなり、レポートや画面表示にそのまま活用できるでしょう。

  1. MySQLクエリでSELECT NULLステートメントは使用できる?具体例で解説

    MySQLのSELECT文でNULLを取得できるのか?結論から言うと、はい、MySQLのクエリではSELECT NULLステートメントを使用できます。NULLをそのまま選択対象として指定すると、結果セットにはNULL値が返されます。この記事では、実際にテーブルを作成し、SELECT NULLがどのように動作するのかを順を追って確認していきます。1. テーブルの作成まずはサンプル用のテーブルを作成しましょう。mysql> create table DemoTable ( Name varchar(100) ); Query OK, 0 rows affected (0.49 sec

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

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