UI設計したり、ウェブシステムを開発したりします。 

SQL見るだけクエリ#022 IF関数を使用した条件付きの取得

記入日:2023-01-30 編集日:2023-01-30

SQL見るだけクエリ。今回は、MYSQL IF関数を使用した条件付きの取得を考えてみようと思います。

MySQLのIF関数を使用することで、条件付きの計算を行うことが可能です。

IF関数の基本的な構文は以下の通りです。

IF(条件, 値1, 値2)

条件が満たされた場合には値1を、そうでない場合には値2を取得することが可能です。

例えば、テーブル内のデータを検索し、ある条件に一致する場合には、
その値に1を加えて、そうでない場合にはその値をそのまま表示するSQL文を実行する場合を考えます。

その場合、以下のSQL文を実行することで実現できます。

SELECT IF(条件, 値 + 1, 値) FROM テーブル名;

具体例 20歳以上の場合にプラス1

SELECT IF(年齢 > 20, 勤務時間 + 1, 勤務時間) AS 時間 FROM 従業員;

上記のSQL文を実行すると、年齢が20歳以上の場合には、勤務時間に1時間を加えた値を取得することが可能です。

例えば、以下のデータをインサートする場合を考えます。

INSERT INTO 従業員 (年齢, 勤務時間)
VALUES (20, 8), (25, 5), (30, 10);

その場合、以下のSQL文を実行すると、年齢が20歳以上の場合には、
勤務時間に1時間を加えた値を取得することが可能です。

SELECT IF(年齢 > 20, 勤務時間 + 1, 勤務時間) AS 時間 FROM 従業員;

の結果は以下となります。

時間
8
6
11

条件が複数の場合

MySQLのIF関数を使用することで、複数の条件を指定した場合の条件付きの計算を行うことが可能です。 その場合、IF関数の基本的な構文は以下の通りです。

IF(条件1, 値1, IF(条件2, 値2, 値3))

条件1が満たされた場合には値1を、条件2が満たされた場合には値2を、
どちらの条件も満たされない場合には値3を取得することが可能です。

例えば、テーブル内のデータを検索し、ある条件に一致する場合には、
その値に2を加えて、そうでない場合にはその値に1を足し、
さらにそれも満たされない場合にはその値をそのまま表示するSQL文を実行する場合を考えます。

その場合、以下のSQL文を実行することで実現できます。

SELECT IF(条件1, 値 + 2, IF(条件2, 値 + 1, 値)) FROM テーブル名;

具体例 20歳以上の場合にプラス2 10歳以上20歳未満の場合にはプラス1

SELECT IF(年齢 > 20, 勤務時間 + 2, IF(年齢 > 10, 勤務時間 + 1, 勤務時間)) AS 時間 FROM 従業員;

上記のSQL文を実行すると、年齢が20歳以上の場合には、勤務時間に2時間を加えた値を取得し、 10歳以上20歳未満の場合には勤務時間に1時間を加えた値を取得し、 それ以外の場合には勤務時間をそのまま取得することが可能です。

SQLの使いどころ

サイトに大量の情報を掲載することは、ユーザーにとってとても便利なことです。しかし、情報が多すぎると、目的の情報を見つけるのが困難になります。そのため、SQLを使用することで、情報を効率的に管理することができます。

SQLを使用することで、データベース内の情報を検索したり、フィルタリングしたりすることができます。これにより、ユーザーは目的の情報をスムーズかつ簡単に見つけることができます。

また、SQLを使用することで、データを集計したり、統合したりすることもできます。これにより、ユーザーはさまざまな視点から情報を分析することができます。つまり、サイトに多くの情報を掲載することが重要である一方で、その情報を効率的かつ簡単に管理することが求められる場合には、SQLが不可欠であるといえます。

KK

機械工学を専攻。工業デザイナーとして、国内及び海外の自動車・搬送ラインの設計などに従事した後、2003年にウェブシステム会社を設立。UI設計やウェブシステムの開発、DX化のディレクションなどを行っています。