Heim >Datenbank >MySQL-Tutorial >Was ist eine MySQL-Unterabfrage? Beispiel für die tatsächliche Verwendung einer MySQL-Datenbank-Unterabfrage
Was ist eine MySQL-Unterabfrage?
Eine Unterabfrage wird auch als interne Abfrage bezeichnet. Im Vergleich zur internen Abfrage wird diejenige, die eine interne Abfrage enthält, als externe Abfrage bezeichnet. Unterabfragen ermöglichen die Verschachtelung einer Abfrage in einer anderen Abfrage.
Eigenschaften von MySQL-Datenbank-Unterabfrageanweisungen: Überall dort, wo ein Ausdruck verwendet werden kann, kann eine Unterabfrage verwendet werden, solange die Unterabfrage von der Anzahl der zurückgegebenen Werte abhängt und die Unterabfrage extern ist Abhängigkeiten, Klassifizierung basierend auf Unterschieden in den Vergleichsoperatoren; dies wird häufig in SQL-Anweisungen für Paging-Abfragen verwendet.
Unterabfragen können in SELECT-, INSERT-, UPDATE-, DELETE- und anderen Anweisungen verschachtelt werden
In den meisten Fällen fungieren Unterabfragen als Zwischenergebnismengen
Unterabfragen können verschachtelt werden und die Verschachtelungsbeschränkungen variieren je nach Speicher und Komplexität des Ausdrucks
Überall dort, wo ein Ausdruck verwendet werden kann, kann eine Unterabfrage verwendet werden, solange sie einen einzelnen Wert zurückgibt
Je nach Anzahl der Rückgabewerte kann es unterteilt werden in: Skalare Unterabfrage, mehrwertige Unterabfrage
Je nach Unterabfrage, externe Abhängigkeit: unabhängige Unterabfrage, verwandte Unterabfrage
entsprechend dem Unterschied der Vergleichsoperatoren: IN, EXISTS, ANY, SOME, ALL und andere Formen
Erstellen Sie zunächst zwei Tabellen (Schülertabelle und Lehrertabelle)
# 创建学生表 mysql> create table tb_student( -> stu_ID long, -> class varchar(5), -> score int -> ); Query OK, 0 rows affected (0.23 sec) # 创建教师表 mysql> create table tb_teacher( -> tea_ID long, -> class varchar(5), -> age int -> ); Query OK, 0 rows affected (0.49 sec)
Fügen Sie einige Werte in die Tabelle ein
insert into tb_student values(1, "A", 20); insert into tb_student values(2, "A", 30); insert into tb_student values(3, "A", 70); insert into tb_student values(4, "B", 60); insert into tb_student values(5, "B", 70); insert into tb_student values(6, "B", 80); insert into tb_teacher values(1, "A", 25); insert into tb_teacher values(2, "B", 40);
, die Vorbereitungsarbeiten sind abgeschlossen, und dann fahren Sie mit der Unterabfrageübung fort
Beispiel 1: Lehrer-ID jeder Klasse und die durchschnittliche Punktzahl der Klasse
mysql> select tea_ID, -> (select avg(score) from tb_student as s where s.class = t.class group by class) -> as Avg from tb_teacher as t; +--------+---------+ | tea_ID | Avg | +--------+---------+ | 1 | 40.0000 | | 2 | 70.0000 | +--------+---------+ 2 rows in set (0.00 sec)
Beispiel 2: Das Alter der Lehrer in jeder Klasse und die Anzahl der bestandenen Schüler in der Klasse (60 ist die Bestehensgrenze)
mysql> select age, -> (select count(*) from tb_student as s where s.class = t.class && s.score >= 60 group by class) -> as Count from tb_teacher as t order by Count desc; +------+-------+ | age | Count | +------+-------+ | 40 | 3 | | 25 | 1 | +------+-------+ 2 rows in set (0.00 sec)
Verwandte Empfehlung:
MySQL-Paging-Abfrageanweisungsdatenbank query_MySQL
Mysql-Limit-Unterabfrageanweisung_MySQL
Video: Erweiterte Datenabfrage – Where-Klausel – sechs Tage, um Sie durch MySQL zu führen
Das obige ist der detaillierte Inhalt vonWas ist eine MySQL-Unterabfrage? Beispiel für die tatsächliche Verwendung einer MySQL-Datenbank-Unterabfrage. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!