Heim >Datenbank >MySQL-Tutorial >Was ist eine MySQL-Unterabfrage?

Was ist eine MySQL-Unterabfrage?

青灯夜游
青灯夜游Original
2019-06-01 14:29:428918Durchsuche

MySqls Unterabfrage ist ein wichtiger Teil der Mehrtabellenabfrage. Sie wird oft zusammen mit der Join-Abfrage verwendet und ist die Grundlage der Mehrtabellenabfrage. Der folgende Artikel führt Sie durch die Unterabfrage und ich hoffe, er ist hilfreich für Sie.

Was ist eine MySQL-Unterabfrage?

Was ist eine Unterabfrage?

Unterabfrage, auch interne Abfrage genannt. Wenn eine Abfrage eine Bedingung einer anderen Abfrage ist, wird sie als Unterabfrage bezeichnet. Unterabfragen können mehrere einfache Befehle verwenden, um leistungsstarke zusammengesetzte Befehle zu erstellen. Unterabfragen werden am häufigsten in der WHERE-Klausel eines SELECT-SQL-Befehls verwendet.

Eine Unterabfrage ist eine SELECT-Anweisung, die in einer SELECT-, SELECT…INTO-Anweisung, INSERT…INTO-Anweisung, DELETE-Anweisung oder UPDATE-Anweisung oder in einer anderen Unterabfrage verschachtelt ist.

2. Unterabfrageklassifizierung

Die Unterabfrage ist in die folgenden Kategorien unterteilt:

1 -query: return Ein einwertiger Skalar in seiner einfachsten Form.

2. Spaltenunterabfrage: Die zurückgegebene Ergebnismenge besteht aus N Zeilen und einer Spalte.

3. Zeilenunterabfrage: Die zurückgegebene Ergebnismenge ist eine Zeile mit N Spalten.

4. Tabellenunterabfrage: Die zurückgegebene Ergebnismenge besteht aus N Zeilen und N Spalten.

Verwendbare Operatoren: = > 6d267e5fab17ea8bc578f9e7e5e1570b= 0b10350feb89d12111457853bf8dfc21 ANY IN SOME ALL EXISTS

Eine Unterabfrage gibt einen Skalar (nur einen Wert), eine Zeile, eine Spalte oder eine Tabelle zurück. Diese Unterabfragen werden Skalare, Zeile, Spalten- und Tabellenunterabfragen.

Wenn die Unterabfrage einen Skalarwert (nur einen Wert) zurückgibt, kann die äußere Abfrage die Symbole =, >, 95ec6993dc754240360e28e0de8de30a=, 51905cee85474311ec56ac377fbe3d8f verwenden ; wenn die Unterabfrage keinen Skalarwert zurückgibt und die äußere Abfrage einen Vergleichsoperator verwendet, um das Ergebnis der Unterabfrage zu vergleichen, wird eine Ausnahme ausgelöst.

1. Skalare Unterabfrage:

bedeutet, dass die Unterabfrage einen Skalar mit einem einzelnen Wert, beispielsweise einer Zahl oder einer Zeichenfolge, zurückgibt und gleichzeitig die einfachste Unterabfrage ist. Rücksendeformular. Sie können = > 6d267e5fab17ea8bc578f9e7e5e1570b= 0b10350feb89d12111457853bf8dfc21 diese Operatoren verwenden, um die Skalarergebnisse von Unterabfragen zu vergleichen. Normalerweise befindet sich die Position der Unterabfrage auf der rechten Seite des Vergleichsausdrucks

Beispiel:

SELECT * FROM article WHERE uid = (SELECT uid FROM user WHERE status=1 ORDER BY uid DESC LIMIT 1)
SELECT * FROM t1 WHERE column1 = (SELECT MAX(column2) FROM t2)
SELECT * FROM article AS t WHERE 2 = (SELECT COUNT(*) FROM article WHERE article.uid = t.uid)

2 . MySQL-Beispielabfrage:

bedeutet, dass die von der Unterabfrage zurückgegebene Ergebnismenge aus N Zeilen und einer Spalte besteht. Die Ergebnisse werden normalerweise von einer Abfrage in einem bestimmten Feld der Tabelle zurückgegeben.

Sie können diese Operatoren = > 55748b72b7b5b41ec5fb8a57b7d3d084= f107b1785967b39e70b8ef27a88ca302  verwenden, um die Skalarergebnisse von Unterabfragen zu vergleichen. Normalerweise befindet sich die Position der Unterabfrage auf der rechten Seite der Vergleichsformel.

Sie können IN verwenden Die Operatoren ANY, SOME und ALL können nicht direkt verwendet werden. = > 6d267e5fab17ea8bc578f9e7e5e1570b= 0b10350feb89d12111457853bf8dfc21 Operatoren, die Skalarergebnisse vergleichen, können nicht direkt verwendet werden.

Beispiel:

SELECT * FROM article WHERE uid IN(SELECT uid FROM user WHERE status=1)
SELECT s1 FROM table1 WHERE s1 > ANY (SELECT s2 FROM table2)
SELECT s1 FROM table1 WHERE s1 > ALL (SELECT s2 FROM table2)

NOT IN ist ein Alias ​​von a8093152e673feb7aba1828c43532094

Sonderfall:

Wenn Tabelle2 eine leere Tabelle ist, ist das Ergebnis nach ALL TRUE;

Wenn die Unterabfrage etwa (0,NULL,1) zurückgibt, ist dies der Fall ist ungeachtet Wenn s1 größer als die zurückgegebenen Ergebnisse ist, aber leere Zeilen vorhanden sind, ist das Ergebnis nach ALL UNKNOWN.

Hinweis: Für den Fall einer leeren Tabelle in Tabelle2 geben die folgenden Anweisungen NULL zurück:

SELECT s1 FROM table1 WHERE s1 > (SELECT s2 FROM table2)
SELECT s1 FROM table1 WHERE s1 > ALL (SELECT MAX(s1) FROM table2)

3. MySQL-Zeilenunterabfrage:

finger The Die von der Abfrage zurückgegebene Ergebnismenge ist eine Zeile mit N Spalten. Das Ergebnis der Unterabfrage ist normalerweise die Ergebnismenge, die durch die Abfrage einer bestimmten Datenzeile in der Tabelle zurückgegeben wird.

Beispiel:

SELECT * FROM table1 WHERE (1,2) = (SELECT column1, column2 FROM table2)
//注:(1,2) 等同于 row(1,2)
SELECT * FROM article WHERE (title,content,uid) = (SELECT title,content,uid FROM blog WHERE bid=2)

4. MySQL-Tabellenunterabfrage:

bedeutet, dass die von der Unterabfrage zurückgegebene Ergebnismenge Tabellendaten mit N Zeilen ist N Spalten.

Beispiel:

SELECT * FROM article WHERE (title,content,uid) IN (SELECT title,content,uid FROM blog)

Das obige ist der detaillierte Inhalt vonWas ist eine MySQL-Unterabfrage?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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