MySQL UNION-Operator
Dieses Tutorial stellt die Syntax und Beispiele des MySQLUNION-Operators vor.
Beschreibung
Der MySQL-UNION-Operator wird verwendet, um die Ergebnisse von zwei oder mehr SELECT-Anweisungen in einer Ergebnismenge zu kombinieren und doppelte Zeilen zu entfernen.
Der UNION-Operator muss aus zwei oder mehr SELECT-Anweisungen bestehen, und die Anzahl der Spalten und die Datentypen an den entsprechenden Positionen jeder SELECT-Anweisung müssen gleich sein.
Syntax
Das Syntaxformat des MySQL-UNION-Operators ist:
SELECT column1, column2, ... FROM table1 WHERE condition1 UNION SELECT column1, column2, ... FROM table2 WHERE condition2 [ORDER BY column1, column2, ...];
Parameter description:
column1,column2, ... sind die Namen der Spalten, die Sie auswählen möchten. Wenn Sie*bedeutet die Auswahl aller Spalten.table1,table2, ... sind die Namen der Tabellen, aus denen Sie Daten abfragen möchten.condition1,condition2, ... sind dieSELECTFilterbedingungen für jede Anweisung und sind optional.ORDER BYDie Klausel ist eine optionale Klausel, die verwendet wird, um die Sortierreihenfolge der kombinierten Ergebnismenge anzugeben.
Beispiele
1. Grundlegende UNION-Operation:
SELECT city FROM customers UNION SELECT city FROM suppliers ORDER BY city;
Die obige SQL-Anweisung wählt eindeutige Werte aller Städte aus der Tabelle Customers und der Tabelle Suppliers aus und sortiert sie in aufsteigender Reihenfolge nach dem Stadtnamen.
2. UNION mit Filterbedingungen:
SELECT product_name FROM products WHERE category = 'Electronics' UNION SELECT product_name FROM products WHERE category = 'Clothing' ORDER BY product_name;
Die obige SQL-Anweisung wählt Produktnamen aus den Kategorien Electronics und Clothing aus und sortiert sie in aufsteigender Reihenfolge nach dem Produktnamen.
3. Die Anzahl der Spalten und Datentypen in UNION-Operationen muss gleich sein:
SELECT first_name, last_name FROM employees UNION SELECT department_name, NULL FROM departments ORDER BY first_name;
Das zurückgegebene Ergebnis enthält first_name und last_name aus der employees-Tabelle sowie department_name und NULL aus der departments-Tabelle. Alle Ergebnisse werden nach der Spalte first_name sortiert.
4. Die Verwendung von UNION ALL entfernt keine doppelten Zeilen:
SELECT city FROM customers UNION ALL SELECT city FROM suppliers ORDER BY city;
Die obige SQL-Anweisung verwendet UNION ALL, um alle Städte aus der Customers-Tabelle und der Suppliers-Tabelle zu kombinieren, ohne doppelte Zeilen zu entfernen.
Der UNION-Operator entfernt doppelte Zeilen beim Zusammenführen von Ergebnismengen, während UNION ALL keine doppelten Zeilen entfernt. Daher kann UNION ALL eine bessere Leistung bieten, aber wenn Sie wirklich doppelte Zeilen entfernen möchten, können Sie UNION verwenden.
Demo-Datenbank
In diesem Tutorial verwenden wir die Beispieldatenbank EXAMPLE.
Nachfolgend sind die Daten aufgeführt, die aus der Tabelle "Websites" ausgewählt wurden:
mysql> SELECT * FROM Websites; +----+--------------+---------------------------+-------+---------+ | id | name | url | alexa | country | +----+--------------+---------------------------+-------+---------+ | 1 | Google | https://www.google.cm/ | 1 | USA | | 2 | 淘宝 | https://www.taobao.com/ | 13 | CN | | 3 | Example | http://www.example.com/ | 4689 | CN | | 4 | 微博 | http://weibo.com/ | 20 | CN | | 5 | Facebook | https://www.facebook.com/ | 3 | USA | | 7 | stackoverflow | http://stackoverflow.com/ | 0 | IND | +----+---------------+---------------------------+-------+---------+
Nachfolgend sind die Daten aus der App "apps":
mysql> SELECT * FROM apps; +----+------------+-------------------------+---------+ | id | app_name | url | country | +----+------------+-------------------------+---------+ | 1 | QQ APP | http://im.qq.com/ | CN | | 2 | 微博 APP | http://weibo.com/ | CN | | 3 | 淘宝 APP | https://www.taobao.com/ | CN | +----+------------+-------------------------+---------+ 3 rows in set (0.00 sec)
SQL UNION Beispiel
Die folgende SQL-Anweisung wählt alledistinctcountry (nur eindeutige Werte) aus:
Beispiel
VEREINIGUNG
SELECT country FROM apps
ORDER BY country;
Das Ausführen des obigen SQL liefert die folgenden Ergebnisse:
Hinweis:UNION kann nicht verwendet werden, um alle Länder aus beiden Tabellen aufzulisten. Wenn einige Websites und Apps aus demselben Land stammen, wird jedes Land nur einmal aufgeführt. UNION wählt nur unterschiedliche Werte aus. Bitte verwenden Sie UNION ALL, um doppelte Werte auszuwählen!
SQL UNION ALL Beispiel
Die folgende SQL-Anweisung verwendet UNION ALL, um aus den Tabellen "Websites" und "apps"allecountry auszuwählen (einschließlich doppelter Werte):
Beispiel
UNION ALL
SELECT country FROM apps
ORDER BY country;
Das Ausführen des obigen SQL liefert die folgenden Ergebnisse:
SQL UNION ALL mit WHERE
Die folgende SQL-Anweisung verwendet UNION ALL, um aus den Tabellen "Websites" und "apps"alleDaten für China (CN) auszuwählen (einschließlich doppelter Werte):
Beispiel
WHERE country='CN'
UNION ALL
SELECT country, app_name FROM apps
WHERE country='CN'
ORDER BY country;
Das Ausführen des obigen SQL liefert die folgenden Ergebnisse: