Heim >Datenbank >MySQL-Tutorial >Was ist der Unterschied zwischen UNION und UNION ALL von SQL?
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!