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

SELECT country FROM Websites
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

SELECT country FROM Websites
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

SELECT country, name FROM Websites
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:

Andere Erweiterungen