Heim >Datenbank >MySQL-Tutorial >So verwenden Sie eine MySQL-Unterabfrage
Select-Anweisungen, die in anderen Anweisungen vorkommen, werden als Unterabfragen oder innere Abfragen bezeichnet; externe Abfrageanweisungen werden als Hauptabfragen oder äußere Abfragen bezeichnet.
-- 子查询 -- 查询的条件来自于另一查询的结果 SELECT * FROM t_user WHERE number=(SELECT number FROM t_user WHERE NAME='张三')
Natürlich haben Unterabfragen auch Typen, die in die folgenden Typen unterteilt sind:
Skalar Unterabfrage (die Ergebnismenge hat nur eine Zeile und eine Spalte)
Spaltenunterabfrage (die Ergebnismenge hat nur eine Spalte und mehrere Zeilen)
Zeilenunterabfrage (die Ergebnismenge hat eine Zeile und mehrere Spalten) (weniger )
Tabellenunterabfrage (Ergebnissätze sind im Allgemeinen mehrzeilig und mehrspaltig)
Hier nehmen wir die neue t_user-Tabelle als Beispiel
Es ist zu beachten, dass: Die Klassifizierung hier basiert auf den Ergebnissen der eingebetteten Unterabfrage, wie der oben genannten SQL Die Anweisung ist eine skalare Unterabfrage
Das Ergebnis der Unterabfrage hat nur eine Zeile und eine Spalte
Dann diskutieren wir basierend auf der Position der Unterabfrage in der SQL Anweisung:
Nach der Auswahl: Nur skalare Unterabfragen werden unterstützt.
-- select语句后面,将t1查询出的结果作为子查询的条件 SELECT t1.number, (SELECT NAME FROM t_user t2 WHERE t1.name = t2.name) FROM t_user t1
Abfrageergebnisse:
Einfügen in, nach dem Aktualisieren und Löschen:
Einfügen in wird verwendet, um Daten in die Tabelle einzufügen, sodass sie gefolgt werden können Spaltenunterabfragen und Tabellenunterabfragen
-- insert into 后跟子查询 INSERT INTO t_user(number,NAME,age,birthday,weight,sex,opertime) SELECT number,NAME,age,birthday,weight,sex,NOW() FROM t_user WHERE id=3
Was hier beachtet werden muss, ist Aktualisieren und Löschen
UPDATE t_user SET NAME='abc' WHERE number=(SELECT number FROM t_user WHERE Weight=110)
DELETE FROM t_user WHERE id= (SELECT id FROM t_user WHERE id=7)
Die beiden oben genannten SQL, MySQL sind Wir dürfen es nicht so ausführen:
Der zugrunde liegende Mechanismus von MySQL verhindert, dass wir die Struktur dieser Tabelle ändern, wenn Diese Tabelle bedienen
Mit anderen Worten, die Unterabfrage kann die aktuell bearbeitete Tabelle nicht abfragen
Nachher: Es kann eine Skalarunterabfrage, eine Spaltenunterabfrage, eine Zeilenunterabfrage folgen
-- where后跟标量子查询 -- 查询体重最大的人信息 SELECT * FROM t_user WHERE weight=(SELECT MAX(weight) FROM t_user) -- where后跟列子查询 -- 查询体重大于或等于130的人信息 SELECT * FROM t_user WHERE weight IN (SELECT weight FROM t_user WHERE weight>=130) -- where后跟行子查询 -- 查询年龄最大,体重最大的人的信息 SELECT * FROM t_user WHERE (age,weight) = (SELECT MAX(age),MAX(weight) FROM t_user)
Nachher: Es kann eine Tabelle folgen Unterabfrage
Das Ergebnis der Tabellenunterabfrage sind mehrere Zeilen und Spalten, also eine Tabelle
-- 表子查询 SELECT t.age FROM (SELECT age,weight FROM t_user)t
Ergebnis:
Das obige ist der detaillierte Inhalt vonSo verwenden Sie eine MySQL-Unterabfrage. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!