Verwendung von IF EXISTS in MySQL-Datenbank

Preet Sanghavi 20 Januar 2022
  1. Grundlegende Verwendung des Operators EXISTS in MySQL
  2. Verwendung des Operators IF EXISTS in MySQL
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.

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

Verwandter Artikel - MySQL Query