Heim  >  Artikel  >  Datenbank  >  MySQL-Abfragedaten führen Abfrageergebnisse zusammen

MySQL-Abfragedaten führen Abfrageergebnisse zusammen

coldplay.xixi
coldplay.xixinach vorne
2021-03-17 09:32:554686Durchsuche

MySQL-Abfragedaten führen Abfrageergebnisse zusammen.

  • Mit dem Schlüsselwort Union können Sie mehrere Select-Anweisungen angeben und deren Ergebnisse in einer einzigen Ergebnismenge kombinieren. Beim Zusammenführen müssen die Anzahl der Spalten und Datentypen, die den beiden Tabellen entsprechen, gleich sein. Verwenden Sie das Schlüsselwort „union“ oder „union all“, um die einzelnen Select-Anweisungen zu trennen.
  • Union verwendet nicht das Schlüsselwort all. Doppelte Datensätze werden während der Ausführung gelöscht und alle zurückgegebenen Zeilen sind eindeutig. Die Funktion der Verwendung des Schlüsselworts all besteht nicht darin, doppelte Zeilen zu löschen und die Ergebnisse nicht automatisch zu sortieren.
    Das grundlegende Syntaxformat lautet:
select column,...from table1union [all]select column,... from table2

(kostenlose Lernempfehlung: MySQL-Video-Tutorial)

[Beispiel 1] Fragen Sie die Informationen aller Früchte mit einem Preis unter 9 ab, fragen Sie s_id gleich ab bis 101 und 103 alle Für Fruchtinformationen verwenden Sie Union, um die Abfrageergebnisse zu verbinden. Die SQL-Anweisung lautet wie folgt:

mysql> select s_id,f_name,f_price    -> from fruits    -> where f_price <9.0
    -> union all
    -> select s_id,f_name,f_price    -> from fruits    -> where s_id in(101,103);+------+------------+---------+| s_id | f_name     | f_price |+------+------------+---------+|  104 | lemon      |    6.40 ||  101 | apple      |    5.20 ||  103 | apricot    |    2.20 ||  104 | berry      |    7.60 ||  107 | xxxx       |    3.60 ||  105 | melon      |    8.20 ||  101 | cherry     |    3.20 ||  105 | xbabay     |    2.60 ||  102 | grape      |    5.30 ||  107 | xbabay     |    3.60 ||  101 | apple      |    5.20 ||  103 | apricot    |    2.20 ||  101 | blackberry |   10.20 ||  101 | cherry     |    3.20 ||  103 | coconut    |    9.20 |+------+------------+---------+15 rows in set (0.06 sec)

union kombiniert die Ergebnisse mehrerer Select-Anweisungen zu einer Ergebnismenge. Sie können die Ergebnisse jeder Select-Anweisung separat anzeigen:

mysql> select s_id,f_name,f_price    -> from fruits    -> where f_price < 9.0;+------+---------+---------+| s_id | f_name  | f_price |+------+---------+---------+|  104 | lemon   |    6.40 ||  101 | apple   |    5.20 ||  103 | apricot |    2.20 ||  104 | berry   |    7.60 ||  107 | xxxx    |    3.60 ||  105 | melon   |    8.20 ||  101 | cherry  |    3.20 ||  105 | xbabay  |    2.60 ||  102 | grape   |    5.30 ||  107 | xbabay  |    3.60 |+------+---------+---------+10 rows in set (0.00 sec)mysql> select s_id,f_name,f_price    -> from fruits    -> where s_id in(101,103);+------+------------+---------+| s_id | f_name     | f_price |+------+------------+---------+|  101 | apple      |    5.20 ||  103 | apricot    |    2.20 ||  101 | blackberry |   10.20 ||  101 | cherry     |    3.20 ||  103 | coconut    |    9.20 |+------+------------+---------+5 rows in set (0.00 sec)

Sie können den separaten Abfrageergebnissen entnehmen, dass die erste Select-Anweisung Früchte mit einem Preis unter 9 abfragt und die zweite Select-Anweisung Früchte abfragt, die von den Lieferanten 101 und 103 bereitgestellt werden.

  • Verwenden Sie Union, um die beiden Select-Anweisungen zu trennen. Kombinieren Sie nach der Ausführung die Ausgabeergebnisse zu einem einzigen Ergebnissatz und löschen Sie doppelte Datensätze.
  • Verwenden Sie „Union All“, um doppelte Zeilen einzuschließen. Union entfernt automatisch doppelte Zeilen aus der Abfrageergebnismenge. Wenn Sie alle übereinstimmenden Zeilen zurückgeben möchten, ohne sie zu löschen, können Sie Union All verwenden.

[Beispiel 2] Fragen Sie die Informationen aller Früchte mit einem Preis unter 9 ab, fragen Sie die Informationen aller Früchte mit s_id gleich 101 und 103 ab, verwenden Sie Union All, um die Abfrageergebnisse zu verbinden, die SQL-Anweisung lautet wie folgt:

mysql> select s_id,f_name,f_price    -> from fruits    -> where f_price<9.0
    -> union all
    -> select s_id,f_name,f_price    -> from fruits    -> where s_id in(101,103);+------+------------+---------+| s_id | f_name     | f_price |+------+------------+---------+|  104 | lemon      |    6.40 ||  101 | apple      |    5.20 ||  103 | apricot    |    2.20 ||  104 | berry      |    7.60 ||  107 | xxxx       |    3.60 ||  105 | melon      |    8.20 ||  101 | cherry     |    3.20 ||  105 | xbabay     |    2.60 ||  102 | grape      |    5.30 ||  107 | xbabay     |    3.60 ||  101 | apple      |    5.20 ||  103 | apricot    |    2.20 ||  101 | blackberry |   10.20 ||  101 | cherry     |    3.20 ||  103 | coconut    |    9.20 |+------+------------+---------+15 rows in set (0.00 sec)

Sie können hier sehen, dass die Gesamtzahl der Datensätze der Summe der von den beiden SELECT-Anweisungen zurückgegebenen Datensätze entspricht. Die Ergebnisse der Join-Abfrage entfernen keine doppelten Zeilen. Der Unterschied zwischen

union und union all:

  • Die Funktion der Verwendung von union all besteht nicht darin, doppelte Zeilen zu löschen. Die All-Schlüsselwortanweisung erfordert bei der Ausführung weniger Ressourcen. Verwenden Sie sie daher so oft wie möglich.
  • Wenn Sie sicher sind, dass die Abfrageergebnisse keine doppelten Daten enthalten oder keine Notwendigkeit besteht, doppelte Daten zu entfernen, sollten Sie versuchen, uninon all zu verwenden, um die Abfrageeffizienz zu verbessern.

Weitere verwandte kostenlose Lernempfehlungen: MySQL-Tutorial(Video)

Das obige ist der detaillierte Inhalt vonMySQL-Abfragedaten führen Abfrageergebnisse zusammen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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