Heim >Datenbank >MySQL-Tutorial >So verwenden Sie eine MySQL-Unterabfrage

So verwenden Sie eine MySQL-Unterabfrage

王林
王林nach vorne
2023-06-02 10:31:051884Durchsuche

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

So verwenden Sie eine MySQL-Unterabfrage

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

So verwenden Sie eine MySQL-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:

So verwenden Sie eine MySQL-Unterabfrage

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:

So verwenden Sie eine MySQL-Unterabfrage

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:

So verwenden Sie eine MySQL-Unterabfrage

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen