Heim >Datenbank >MySQL-Tutorial >Eine kurze Einführung in die MySQL-Unterabfrage

Eine kurze Einführung in die MySQL-Unterabfrage

小云云
小云云Original
2018-03-15 10:41:452085Durchsuche

Die grundlegende Bedeutung einer Unterabfrage ist eine „Abfrageanweisung“, die an bestimmten Positionen innerhalb einer Abfrageanweisung (Auswahlanweisung) erscheint. Dieser Artikel gibt Ihnen hauptsächlich eine kurze Einführung in MySQL-Unterabfragen und hofft, allen zu helfen.

Beispiel:
Eine kurze Einführung in die MySQL-Unterabfrage
Nach der Änderung:
Eine kurze Einführung in die MySQL-Unterabfrage

Wenn die Unterabfrageanweisung von „select 5000“ durch „Select „Der Durchschnittspreis aller Waren“ hat praktische Bedeutung.

  • Die Unterabfrage bedient die Hauptabfrage

  • Die Hauptabfrage wird erst ausgeführt, nachdem die Unterabfrage bestimmte Ergebnisdaten erhalten hat.

In der Form kann es wie folgt ausgedrückt werden:

  • Feld, Ausdruck oder Unterabfrage [als Alias] aus Tabellennamen auswählen oder Ergebnisse verknüpfen oder Unterabfragen, bei denen Felder oder Ausdrücke oder bedingte Beurteilungen von Unterabfragen

Das heißt, Unterabfragen können an diesen Positionen erscheinen (haben ist eigentlich in Ordnung, weil es die gleiche Bedeutung hat wie wo) ;

Unterabfrage, unterteilt nach Position (Anlass):

类型 形式
作为主查询的结果数据 select c1,(select f1 from tab2) as f11 from tab1; #这里子查询应该只有一个数据(一行一列,标量子查询)
作为主查询的条件数据 select c1 from tab1 where c1 in (select f1 from tab2); #这里子查询可以是多个数据(多行一列,列子查询)
作为主查询的来源数据 select c1 from (select f1 as c1, f2 from tab2) as t2; #这里子查询可以是任意查询结果(表子查询)

Allgemeine Unterabfragen

Unterabfragen in Vergleichsoperatoren

Form:

  • Operandenvergleichsoperatoren (skalare Unterabfrage); 🎜>

Erklärung:

  • Der Operand ist eigentlich eines der beiden Daten des Vergleichsoperators, normalerweise ein Feldname;

  • Beispiel:
  select ....  from XXX where  id > 5;

Finden Sie das Produkt mit dem höchsten Preis;
Unterabfrage mit in
select * from product  where  price = (select  max(price)  from  product );

Vorherige Verwendung von in:
XX  in  (值1,值2,值3,....);
Dann lautet die In-Unterabfrage:
  • Beispiel:
XX  in  (列子查询)

Alle Kategorienamen mit „Strom“ herausfinden „Alle Produkte mit dem Wort;
Verwenden Sie die Unterabfrage eines beliebigen
select  *  from  product  where  protype_id  in( 
select  protype_id  from  product_type  where  protype_name  like ‘%电%’
);

in der Form:

Bedeutung:

操作数 比较运算符 any  (列子查询);

Wenn ein bestimmter Operand (Feld) den Vergleichsoperator für einen beliebigen Wert der Spaltenunterabfrage erfüllt, ist die Bedingung erfüllt.
    Beispiel:

Unterabfrage mit alle:
select  *  from  tab1  where  id >  any  (select  f1  from  tab2);

Form:

Bedeutung:

操作数  比较运算符 all   (列子查询);

Wenn ein bestimmter Operand (Feld) den Vergleichsoperator für alle Daten erfüllt Werte der Spaltenunterabfrage, die Bedingung ist erfüllt; Beispiel:
  • Unterverwendung einiger

select  *  from  tab2  where  f1  >  all  ( select  id  from   tab1 );
In einem Satz: some ist ein Synonym für any.

    Abfrage mit existiert
  • Form:
Bedeutung:

Wenn diese Unterabfrage „Daten hat“, ist das Ergebnis von „existiert“ wahr, andernfalls ist es falsch

where  exists( 子查询 )

Erklärung:
  • Weil die Unterabfrage existiert Diese Bedeutung führt oft zu der Situation in der Hauptabfrage: Entweder werden alle entfernt, oder keiner von ihnen wird entfernt. Bei einer Beschränkung auf diese Bedeutung (Gebrauchssituation) verliert es grundsätzlich seine praktische Bedeutung.

Also:

In tatsächlichen Anwendungen ist diese Unterabfrage oft keine eigenständige Unterabfrage, sondern muss mit der Datenquelle (Tabelle der „Hauptabfrage“) kombiniert werden. ), eine Art Beziehung aufbauen – normalerweise eine Verbindungsbeziehung. Die Art und Weise der Einrichtung ist „implizit“, das heißt, die Beziehung spiegelt sich nicht im Code wider, aber es gibt intern die „Substanz“ ihrer Verbindung.

Diese implizite Verbindungsmethode spiegelt sich normalerweise in der bedingten Where-Anweisung in der Unterabfrage wider, wobei die Daten (Felder) in der Hauptabfragetabelle verwendet werden 🎜>
Beispiel:

    Fragen Sie alle Produkte ab, deren Kategorienamen in der Produkttabelle das Wort „Strom“ enthalten; 🎜>
  • Das Ergebnis ist:

Hinweis:

- Diese Art von Unterabfrageanweisung kann nicht „unabhängig existieren (unabhängig ausgeführt)“ werden, sondern muss zusammen mit der Hauptabfrage verwendet werden; - Andere Unterabfragen können unabhängig ausgeführt werden und erhalten ein laufendes Ergebnis.

- Die Bedingungen in dieser Unterabfrage sollten so eingestellt werden, dass sie eine bestimmte Korrelation mit einem bestimmten Feld der Hauptabfrage haben. Normalerweise ist diese Beurteilung die „ursprüngliche Verbindungsbedingung“ der beiden Tabellen
  • Abschließend eine Schlussfolgerung:


    Eine kurze Einführung in die MySQL-UnterabfrageWenn eine Abfrageanforderung mithilfe einer Join-Abfrage oder einer Unterabfrage ermittelt werden kann, wird normalerweise die Verwendung der Join-Interpolation empfohlen, da diese effizienter ist.

Verwandte Empfehlungen:


Eine kurze Einführung in die MySQL-UnterabfrageDetaillierte Einführung in MySQL-Unterabfragen



Was ist eine MySQL-Unterabfrage? Wie filtere ich mithilfe von Unterabfragen?

Optimierung von MySQL-Unterabfragen

Das obige ist der detaillierte Inhalt vonEine kurze Einführung in die 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