MySQL データベースでの IF EXISTS の使用

Preet Sanghavi 2023年1月30日
  1. MySQL での EXISTS 演算子の基本的な使用法
  2. MySQL で IF EXISTS 演算子を使用する
MySQL データベースでの IF EXISTS の使用

このチュートリアルでは、MySQL の IF EXISTS ステートメントを調べることを目的としています。

ただし、開始する前に、操作するダミーデータセットを作成します。ここでは、テーブル student_details とその中のいくつかの行を作成します。

-- create the table student_details
CREATE TABLE student_details(
  stu_id int,
  stu_firstName varchar(255) DEFAULT NULL,
  stu_lastName varchar(255) DEFAULT NULL,
  primary key(stu_id)
);
-- insert rows to the table student_details
INSERT INTO student_details(stu_id,stu_firstName,stu_lastName) 
 VALUES(1,"Preet","Sanghavi"),
 (2,"Rich","John"),
 (3,"Veron","Brow"),
 (4,"Geo","Jos"),
 (5,"Hash","Shah"),
 (6,"Sachin","Parker"),
 (7,"David","Miller");

上記のクエリは、学生の名前と名前を含む行とともにテーブルを作成します。データのエントリを表示するには、次のコードを使用します。

SELECT * FROM student_details;

前述のコードは、次の出力を提供します。

stu_id	stu_firstName	stu_lastName
1	      Preet	        Sanghavi
2	      Rich	        John
3	      Veron	        Brow
4	      Geo	        Jos
5	      Hash	        Shah
6	      Sachin	    Parker
7	      David	        Miller

MySQL での EXISTS 演算子の基本的な使用法

MySQL の EXISTS 条件は、通常、満たされる条件で構成されるサブクエリとともに使用されます。この条件が満たされた場合、サブクエリは少なくとも 1 行を返します。このメソッドは、ステートメントを DELETESELECTINSERT、または UPDATE するために使用できます。

-- Here we select columns from the table based on a certain condition
SELECT column_name  
FROM table_name  
WHERE EXISTS (  
    SELECT column_name   
    FROM table_name   
    WHERE condition  
);  

ここで、condition は、特定の列から行を選択するときのフィルタリング条件を表します。

stu_id= 4 である stu_firstName 列に学生が存在するかどうかを確認するには、次のコードを使用します。

-- Here we save the output of the code as RESULT
SELECT EXISTS(SELECT * from student_details WHERE stu_id=4) as RESULT;  

前述のコードは、次の出力を提供します。

RESULT
1

上記のコードブロックの 1 はブール値を表し、stu_id= 4 の学生がいることを示しています。

MySQL で IF EXISTS 演算子を使用する

テーブル内の特定の値の存在を確認し、その条件の存在に基づいて出力を変更したい場合があります。この操作の構文は次のとおりです。

SELECT IF( EXISTS(
             SELECT column_name
             FROM table_name
             WHERE condition), 1, 0)

ここで、IF ステートメントが True を返す場合、クエリの出力は 1 です。それ以外の場合は、0 を返します。

stu_id= 4 の生徒がテーブルに存在する場合、Yes, exists を返すクエリを作成しましょう。それ以外の場合は、No, does not exist を返します。この操作を実行するには、以下のコードを見てください。

SELECT IF( EXISTS(
             SELECT stu_firstName
             FROM student_details
             WHERE stu_id = 4), 'Yes, exists', 'No, does not exist') as RESULT;

前述のコードは、次の出力を提供します。

RESULT
Yes, exists

それでは、stu_id= 11 の生徒を探してみましょう。この操作は次のクエリで実行できます。

SELECT IF( EXISTS(
             SELECT stu_firstName
             FROM student_details
             WHERE stu_id = 11), 'Yes, exists', 'No, does not exist') as RESULT;
出力コードブロックに出力を表示するには、ALIAS RESULT を使用します。

前述のコードは、次の出力を提供します。

RESULT
No, does not exist
一般に、MySQL で EXISTS メソッドを使用する SQL クエリは、外部クエリのテーブルのすべてのエントリに対してサブクエリが RE-RUN であるため、非常に低速です。EXISTS 条件を使用せずにほとんどのクエリを表現するためのより高速で効率的な方法があります。

このようにして、MySQL に IF EXISTS を実装することに成功しました。

著者: Preet Sanghavi
Preet Sanghavi avatar Preet Sanghavi avatar

Preet writes his thoughts about programming in a simplified manner to help others learn better. With thorough research, his articles offer descriptive and easy to understand solutions.

LinkedIn GitHub

関連記事 - MySQL Query