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句を使って別名を付ければ、結果セットのカラム名も読みやすくなり、レポートや画面表示にそのまま活用できるでしょう。
-
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
-
MySQLのUPDATE文の中でSELECTステートメントを使う方法
MySQLでUPDATEコマンドを実行する際に、同じテーブルを参照するSELECTステートメントを組み合わせたいケースはよくあります。しかし、UPDATE文の中で直接サブクエリとして対象テーブルを指定するとエラーになるため、工夫が必要です。解決策:サブクエリとWHERE句を組み合わせるこの問題を回避するには、WHERE句とともにサブクエリを使用し、さらにそのサブクエリを別のSELECT文でラップ(派生テーブル化)します。これにより、MySQLは一時的なテーブルとして扱うため、更新中のテーブルへの参照エラーを防ぐことができます。実際の手順を順番に見ていきましょう。1. テーブルを作成するまず、サ