", „in und nicht in: in bedeutet enthalten in"/> ", „in und nicht in: in bedeutet enthalten in">

Heim  >  Artikel  >  Datenbank  >  Häufig verwendete grundlegende Operationssyntax von MySQL (10) ~~ Unterabfrage [Befehlszeilenmodus]

Häufig verwendete grundlegende Operationssyntax von MySQL (10) ~~ Unterabfrage [Befehlszeilenmodus]

黄舟
黄舟Original
2017-03-03 14:22:381183Durchsuche

Obwohl es in MySQL Join-Abfragen gibt, um Multi-Table-Join-Abfragen zu implementieren, ist die Leistung von Join-Abfragen sehr schlecht, sodass Unterabfragen angezeigt werden.

1. Theoretisch können Unterabfragen überall in der Abfrageanweisung erscheinen, aber in praktischen Anwendungen erscheinen sie oft nach „von“ und nach „wo“. Die Unterabfrageergebnisse, die nach „von“ erscheinen, sind normalerweise mehrzeilig und mehrspaltig und fungieren als temporäre Tabellen, während die Unterabfrageergebnisse, die nach „wo“ erscheinen, normalerweise einzelne Zeilen und einzelne Spalten sind und als Bedingungen fungieren:


2. Unterabfragen als Bedingungen nach where werden häufig zusammen mit Vergleichsoperatoren wie „=", „!=", „>“ und „<“ verwendet. Obwohl das Ergebnis normalerweise eine einzelne Zeile und eine einzelne Spalte ist, werden manchmal eine einzelne Zeile und mehrere Spalten verwendet und manchmal werden mehrere Zeilen und eine einzelne Spalte zurückgegeben. Handelt es sich um mehrere Zeilen und einzelne Spalten, wird es häufig in Kombination mit in, any, all, exist:

in und not in:


verwendet

Unter diesen bedeutet „in“ eine beliebige Person, die in der nachfolgenden Unterabfrage-Ergebnismenge enthalten ist, und „nicht in“ bedeutet eine beliebige Person, die nicht in der nachfolgenden Unterabfrage-Ergebnismenge enthalten ist. Im Ergebnis der Unterabfrage in der obigen Abbildung ist die zurückgegebene part_id 1, 2 und 4. Daher stellt die erste Abfrage fest, dass alle part_id in emp 1, 2 oder 4 sind, und die zweite Abfrage findet heraus, dass dies der Fall ist es ist weder 1 noch 4. 2 ist auch nicht 4.

any:


= Die Verwendung von any ist die gleiche wie die Wirkung von in; >any bedeutet, dass es größer als die Unterabfrage ist Eine einfache Erklärung ist, dass sie nur größer als die kleinste in der Ergebnismenge sein muss. any also nur größer als 1 sein und

alle:


>alle bedeutet, größer als alle in der Unterabfrage-Ergebnismenge zu sein. Ein einfaches Verständnis ist, dass es größer als alle ist das Größte. Groß

exists:



exists und not exist kümmert sich nur darum, ob die nachfolgende Unterabfrage Ergebnisse hat, und Es spielt keine Rolle, was das Ergebnis der Unterabfrage ist. Wenn die nachfolgende Unterabfrage ein Ergebnis hat, ist ihr Wert wahr. Wenn kein Ergebnis gefunden wird, ist es falsch, und nicht vorhanden ist genau das Gegenteil davon Situation, und der Wert ist falsch, kein Wert ist wahr. Wenn ihre Werte wahr sind, werden die Ergebnisse der vorherigen Abfrage ermittelt und zur Ergebnismenge der Hauptabfrage hinzugefügt. Andernfalls werden sie nicht zur Ergebnismenge der Hauptabfrage hinzugefügt.

In der obigen Abfrage fragt die Abfrageanweisung zuerst ein Datenelement von emp ab und vergleicht dann die part_id dieser Daten mit der part_id im Unternehmen. Wenn zwei Daten mit derselben ID vorhanden sind, gibt es Es werden Ergebnisse zurückgegeben, und dann werden schließlich 6 Datenelemente zurückgegeben. Der gleiche Grund gilt für die zweite Abfrage. Wenn keine zwei Daten mit derselben ID vorhanden sind, gibt die Hauptabfrage Ergebnisse und nur ein Datenelement zurück.

Das Obige ist der Inhalt der allgemeinen MySQL-Grundoperationssyntax (10) ~~ Unterabfrage [Befehlszeilenmodus]. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn