MySQL MariaDB

MySQL-Unterabfragen

MySQL-Unterabfragen
Eine Unterabfrage ist eine rekursive SQL-Abfrage innerhalb einer übergeordneten Abfrage, oder eine Unterabfrage wird als interne Abfrage betrachtet. Im Gegensatz dazu wird eine äußere Abfrage als die Abfrage bezeichnet, die die Unterabfrage enthält. Eine MySQL-Unterabfrage kann in die Abfragen eingebettet werden, einschließlich SELECT, INSERT, UPDATE oder DELETE. Außerdem kann innerhalb einer anderen Unterabfrage eine Unterabfrage eingebettet sein. Die Phrasen-Unterabfrage sollte überall dort, wo sie verwendet wird, in Klammern geschlossen werden. Wir zeigen Ihnen, wie und wann Sie MySQL-Unterabfragen verwenden, um komplizierte Abfragen zu erstellen, und beschreiben die Idee der zugehörigen Unterabfrage. Öffnen Sie die Befehlszeilen-Shell von Ihrem Desktop und geben Sie Ihr Passwort ein, um sie zu verwenden. Drücken Sie die Eingabetaste und fahren Sie fort.

Unterabfrage innerhalb von Single Table Records:

Erstellen Sie eine Tabelle mit dem Namen 'Tiere' in der Datenbank 'data.' Fügen Sie den folgenden Datensatz von verschiedenen Tieren mit unterschiedlichen Eigenschaften wie angezeigt hinzu. Rufen Sie diesen Datensatz mit der SELECT-Abfrage wie folgt ab:

>> AUSWÄHLEN * AUS Daten.Tiere;

Beispiel 01:

Lassen Sie uns die begrenzten Datensätze dieser Tabelle mithilfe der Unterabfragen abrufen. Mit der folgenden Abfrage wissen wir, dass die Unterabfrage zuerst ausgeführt wird und ihre Ausgabe in der Hauptabfrage als Eingabe verwendet wird. Eine Unterabfrage ruft einfach das Alter ab, in dem der Tierpreis 2500 . beträgt. Das Alter eines Tieres, dessen Preis 2500 beträgt, ist 4 in der Tabelle. Die Hauptabfrage wählt alle Tabellendatensätze aus, deren Alter größer als 4 ist, und die Ausgabe wird unten angegeben.

>> AUSWÄHLEN * AUS Daten.Tiere WO Alter > ( Alter aus Daten auswählen.Tiere WHERE Price='2500' );

Beispiel 02:

Lassen Sie uns dieselbe Tabelle in verschiedenen Situationen verwenden. In diesem Beispiel verwenden wir eine Funktion anstelle der WHERE-Klausel in der Unterabfrage. Wir haben den Durchschnitt aller angegebenen Preise für Tiere genommen. Der Durchschnittspreis beträgt 3189. Die Hauptabfrage wählt alle Datensätze von Tieren mit einem Preis von mehr als 3189 . aus. Sie erhalten die folgende Ausgabe.

>> AUSWÄHLEN * AUS Daten.Tiere WO Preis > ( WÄHLEN SIE AVG(Preis) VON Daten.Tiere);

Beispiel 03:

Lassen Sie uns die IN-Klausel in der SELECT-Hauptabfrage verwenden. Zuallererst ruft die Unterabfrage Preise von mehr als 2500 . ab. Danach wählt die Hauptabfrage alle Datensätze der Tabelle 'Tiere' aus, in denen der Preis im Ergebnis der Unterabfrage liegt.

>> AUSWÄHLEN * AUS Daten.Tiere WO Preis IN ( PREIS AUSWÄHLEN Daten.Tiere WO Preis > 2500 );

Beispiel 04:

Wir haben die Unterabfrage verwendet, um den Namen des Tieres abzurufen, dessen Preis 7000 . beträgt. Da es sich bei diesem Tier um eine Kuh handelt, wird der Name 'Kuh' in die Hauptabfrage zurückgegeben. In der Hauptabfrage werden alle Datensätze aus der Tabelle abgerufen, in der der Tiername "Kuh" lautet.' Da wir nur zwei Datensätze für das Tier 'Kuh' haben, haben wir die folgende Ausgabe.

>> AUSWÄHLEN * AUS Daten.Tiere WHERE Name = ( SELECT Name FROM data.Tiere WHERE Price='7000' );

Unterabfrage innerhalb mehrerer Tabellendatensätze:

Angenommen, die beiden folgenden Tabellen "Schüler" und "Lehrer" in Ihrer Datenbank. Versuchen wir einige Beispiele für Unterabfragen mit diesen beiden Tabellen.

>> AUSWÄHLEN * AUS Daten.Schüler;
>> AUSWÄHLEN * AUS Daten.Lehrer;

Beispiel 01:

Wir holen Daten aus einer Tabelle mit der Unterabfrage und verwenden sie als Eingabe für die Hauptabfrage. Dies bedeutet, dass diese beiden Tabellen in irgendeiner Weise in Beziehung stehen können. Im folgenden Beispiel haben wir die Unterabfrage verwendet, um den Namen des Schülers aus der Tabelle „Student“ abzurufen, in der der Lehrername „Samina“ lautet.' Diese Abfrage gibt 'Samina' an die Hauptabfragetabelle 'teacher . zurück.' Die Hauptabfrage wählt dann alle Datensätze aus, die sich auf den Lehrernamen 'Samina . beziehen.' Da wir zwei Datensätze für diesen Namen haben, haben wir dieses Ergebnis.

>> AUSWÄHLEN * AUS Daten.Lehrer WHERE TeachName = ( SELECT TeachName FROM data.Schüler WHERE TeachName = 'Samina' );

Beispiel 02:

Um die Unterabfrage bei verschiedenen Tabellen auszuarbeiten, versuchen Sie dieses Beispiel. Wir haben eine Unterabfrage, die den Namen des Lehrers von der Tabelle student abruft. Der Name sollte an jeder beliebigen Position in seinem Wert ein 'i' haben. Dies bedeutet, dass alle Namen in der Spalte TeachName mit einem 'i' im Wert ausgewählt und an die Hauptabfrage zurückgegeben werden. Die Hauptabfrage wählt alle Datensätze aus der Tabelle 'teacher' aus, in der der Name des Lehrers in der von der Unterabfrage zurückgegebenen Ausgabe enthalten ist. Da die Unterabfrage 4 Namen von Lehrern zurückgegeben hat, werden wir alle diese Namen in der Tabelle "Lehrer" aufzeichnen.'

>> AUSWÄHLEN * AUS Daten.Lehrer WHERE TeachName IN ( SELECT TeachName FROM data.Schüler WHERE TeachName LIKE '%i%' );

Beispiel 03:

Betrachten Sie die beiden folgenden Tabellen, 'order' und 'order1'.

>> AUSWÄHLEN * AUS Daten.Auftrag;
>> AUSWÄHLEN * AUS Daten.Bestellung1;

Versuchen wir in diesem Beispiel eine ANY-Klausel, um die Unterabfrage auszuarbeiten elaborate. Die Unterabfrage wählt die 'id' aus der Tabelle 'order1' aus, wobei die Spalte 'Status' den Wert 'Unpaid hat.' Die 'id' kann mehr als 1 sein. Dies bedeutet, dass mehr als 1 Wert an die Hauptabfrage zurückgegeben würde, um die Ergebnisse der Tabelle 'Reihenfolge' zu erhalten. In diesem Fall kann jede 'id' verwendet werden. Wir haben die folgende Ausgabe für diese Abfrage.

>> WÄHLEN Sie Artikel, Verkäufe, ID aus Daten aus.order WHERE id= ANY ( SELECT id FROM data.order1 WHERE Status= 'Unbezahlt' );

Beispiel 04:

Angenommen, Sie haben die folgenden Daten in der Tabelle 'order1', bevor Sie eine Abfrage anwenden.

>> AUSWÄHLEN * AUS Daten.Bestellung1;

Wenden wir die Abfrage innerhalb einer Abfrage an, um einige Datensätze aus der Tabelle 'order1' zu löschen. Zunächst wählt die Unterabfrage den Wert 'Status' aus der Tabelle 'Bestellung' aus, in der der Artikel 'Buch' ist.' Die Unterabfrage gibt als Wert 'Bezahlt' zurück. Jetzt löscht die Hauptabfrage die Zeilen aus der Tabelle 'order1', in der der Spaltenwert 'Status' 'Paid ist.'

>> AUS Daten LÖSCHEN.order1 WHERE Status= ( SELECT Status FROM data.order WHERE Item = 'Buch' );

Bei der Überprüfung haben wir jetzt die folgenden Datensätze in der Tabelle 'order1' nach der Ausführung der Abfrage erhalten.

>> AUSWÄHLEN * AUS Daten.Bestellung1;

Fazit:

Sie haben in allen obigen Beispielen effizient mit vielen Unterabfragen gearbeitet. Wir hoffen jetzt ist alles klar und sauber.

Steuern und verwalten Sie Mausbewegungen zwischen mehreren Monitoren in Windows 10
Dual-Display-Maus-Manager lässt Sie die Mausbewegung zwischen mehreren Monitoren steuern und konfigurieren, indem Sie ihre Bewegungen in der Nähe der ...
Mit WinMouse können Sie die Mauszeigerbewegung auf einem Windows-PC anpassen und verbessern improve
Wenn Sie die Standardfunktionen Ihres Mauszeigers verbessern möchten, verwenden Sie Freeware WinMouse. Es fügt weitere Funktionen hinzu, damit Sie das...
Linker Mausklick funktioniert nicht unter Windows 10
Wenn Sie eine dedizierte Maus mit Ihrem Laptop oder Desktop-Computer verwenden, aber die linker Mausklick funktioniert nicht unter Windows 10/8/7 aus ...