Verwendung von IF EXISTS in MySQL-Datenbank
In diesem Tutorial möchten wir die Anweisung IF EXISTS
in MySQL untersuchen.
Bevor wir jedoch beginnen, erstellen wir ein Dummy-Dataset, mit dem wir arbeiten können. Hier erstellen wir eine Tabelle, student_details
, zusammen mit einigen Zeilen darin.
-- 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");
Die obige Abfrage erstellt eine Tabelle zusammen mit Zeilen mit dem Vor- und Nachnamen des Schülers. Um die Einträge in den Daten anzuzeigen, verwenden wir den folgenden Code.
SELECT * FROM student_details;
Der oben genannte Code gibt die folgende Ausgabe aus:
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
Grundlegende Verwendung des Operators EXISTS
in MySQL
Die Bedingung EXISTS
in MySQL wird im Allgemeinen zusammen mit einer Unterabfrage verwendet, die aus einer zu erfüllenden Bedingung besteht. Wenn diese Bedingung erfüllt ist, gibt die Unterabfrage mindestens eine Zeile zurück. Diese Methode kann zum DELETE
, SELECT
, INSERT
oder UPDATE
einer Anweisung verwendet werden.
-- 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
steht hier für die Filterbedingung bei der Auswahl der Zeilen aus einer bestimmten Spalte.
Um zu prüfen, ob in der Spalte stu_firstName
mit stu_id
= 4 ein Student existiert, verwenden wir den folgenden Code:
-- Here we save the output of the code as RESULT
SELECT EXISTS(SELECT * from student_details WHERE stu_id=4) as RESULT;
Der oben genannte Code gibt die folgende Ausgabe aus:
RESULT
1
1 im obigen Codeblock stellt einen booleschen Wert dar, der darauf hindeutet, dass es einen Schüler mit stu_id
= 4 gibt.
Verwendung des Operators IF EXISTS
in MySQL
Manchmal möchten wir die Existenz eines bestimmten Wertes in einer Tabelle überprüfen und unsere Ausgabe basierend auf der Existenz dieser Bedingung ändern. Die Syntax für diese Operation lautet wie folgt:
SELECT IF( EXISTS(
SELECT column_name
FROM table_name
WHERE condition), 1, 0)
Hier ist die Ausgabe der Abfrage 1, wenn die IF
-Anweisung True zurückgibt. Andernfalls wird 0 zurückgegeben.
Lassen Sie uns eine Abfrage schreiben, die Ja, existiert
zurückgibt, wenn ein Schüler mit stu_id
=4 in der Tabelle existiert. Ansonsten wollen wir Nein, existiert nicht
zurückgeben. Um diesen Vorgang auszuführen, sehen Sie sich den folgenden Code an:
SELECT IF( EXISTS(
SELECT stu_firstName
FROM student_details
WHERE stu_id = 4), 'Yes, exists', 'No, does not exist') as RESULT;
Der oben genannte Code gibt die folgende Ausgabe aus:
RESULT
Yes, exists
Versuchen wir nun, einen Schüler mit stu_id
= 11 zu finden. Diese Operation kann mit der folgenden Abfrage ausgeführt werden:
SELECT IF( EXISTS(
SELECT stu_firstName
FROM student_details
WHERE stu_id = 11), 'Yes, exists', 'No, does not exist') as RESULT;
Hinweis: Wir verwenden den ALIAS RESULT
, um unsere Ausgabe im Ausgabecodeblock anzuzeigen.
Der oben genannte Code gibt die folgende Ausgabe aus:
RESULT
No, does not exist
Hinweis: Im Allgemeinen sind SQL-Abfragen, die die Methode EXISTS
in MySQL verwenden, sehr langsam, da die Unterabfrage für jeden Eintrag in der Tabelle der äußeren Abfrage erneut AUSGEFÜHRT wird. Es gibt schnellere und effizientere Methoden, um die meisten Abfragen zu formulieren, ohne die Bedingung EXISTS
zu verwenden.
Damit haben wir IF EXISTS
erfolgreich in MySQL implementiert.