Heim > Datenbank > MySQL-Tutorial > Hauptteil

Was ist eine MySQL-Unterabfrage?

青灯夜游
Freigeben: 2019-06-01 14:29:42
Original
8854 Leute haben es durchsucht

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: = > < >= <= <> 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 =, >, <, >=, <= und <> 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 = > < >= <= <> 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)
Nach dem Login kopieren

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 = > < >= <= <> 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. = > < >= <= <> 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)
Nach dem Login kopieren

NOT IN ist ein Alias ​​von <>

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)
Nach dem Login kopieren

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)
Nach dem Login kopieren

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)
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!