Heim >Datenbank >MySQL-Tutorial >Was ist der Unterschied zwischen UNION und UNION ALL von SQL?

Was ist der Unterschied zwischen UNION und UNION ALL von SQL?

Patricia Arquette
Patricia ArquetteOriginal
2025-01-23 11:37:37823Durchsuche

What's the Difference Between SQL's UNION and UNION ALL?

Der Unterschied zwischen UNION und UNION ALL in SQL

Sowohl die Operatoren UNION als auch UNION ALL in SQL werden verwendet, um die Ergebnisse mehrerer Abfragen zu kombinieren. Der Hauptunterschied zwischen den beiden besteht jedoch in der Art und Weise, wie sie mit doppelten Zeilen umgehen.

UNION: doppelte Zeilen entfernen

UNION wird verwendet, um mehrere Abfrageergebnisse zusammenzuführen und alle doppelten Zeilen zu entfernen. Es vergleicht Zeilen basierend auf Spaltenwerten und gibt nur unterschiedliche Zeilen zurück. Das heißt, wenn eine Zeile in allen Spalten den gleichen Wert hat, erscheint sie im kombinierten Ergebnis nur einmal.

UNION ALL: Alle Zeilen beibehalten

Im Gegensatz dazu entfernt UNION ALL keine doppelten Zeilen. Es verkettet einfach die Ergebnisse der Abfrage, einschließlich etwaiger Duplikate. Dies ist nützlich, wenn Sie alle Zeilen aus verschiedenen Abfragen beibehalten möchten, unabhängig davon, ob ihre Spaltenwerte übereinstimmen.

Auswirkungen auf die Leistung

Die Verwendung von UNION anstelle von UNION ALL führt zu einem Leistungsaufwand. Dies liegt daran, dass die Datenbank zusätzliche Arbeit leisten muss, um doppelte Zeilen zu identifizieren und zu entfernen. Daher ist UNION ALL normalerweise schneller als UNION, aber es ist möglicherweise nicht immer ideal, wenn Duplikate entfernt werden müssen.

Beispiel: Identifizieren Sie doppelte Zeilen

Um festzustellen, ob es sich bei Zeilen um Duplikate handelt, müssen sie nicht nur vom gleichen Typ sein, sondern auch kompatibel sein. Verschiedene SQL-Systeme handhaben diese Kompatibilität möglicherweise unterschiedlich. Einige Systeme kürzen beispielsweise lange Textspalten zum Vergleich, während andere Systeme Vergleiche zwischen binären Spalten möglicherweise ablehnen.

UNION-Demo:

Das folgende Beispiel kombiniert zwei Abfragen, die jeweils denselben Wert „foo“ für die Spalte „bar“ zurückgeben:

<code class="language-sql">SELECT 'foo' AS bar
UNION
SELECT 'foo' AS bar</code>

Ergebnis:

<code>+-----+
| bar |
+-----+
| foo |
+-----+
1 row in set (0.00 sec)</code>

Wie erwartet entfernt UNION die doppelten Zeilen, sodass nur noch eine Zeile „foo“ enthält.

UNION ALL Demo:

Im Gegensatz dazu entfernt UNION ALL keine Duplikate:

<code class="language-sql">SELECT 'foo' AS bar
UNION ALL
SELECT 'foo' AS bar</code>

Ergebnis:

<code>+-----+
| bar |
+-----+
| foo |
| foo |
+-----+
2 rows in set (0.00 sec)</code>

Das kombinierte Ergebnis enthält zwei Zeilen, einschließlich Duplikaten.

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen UNION und UNION ALL von SQL?. 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