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 行を返します。このメソッドは、ステートメントを DELETE
、SELECT
、INSERT
、または 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;
RESULT
を使用します。前述のコードは、次の出力を提供します。
RESULT
No, does not exist
EXISTS
メソッドを使用する SQL クエリは、外部クエリのテーブルのすべてのエントリに対してサブクエリが RE-RUN であるため、非常に低速です。EXISTS
条件を使用せずにほとんどのクエリを表現するためのより高速で効率的な方法があります。このようにして、MySQL に IF EXISTS
を実装することに成功しました。