Bei Verwendung von UNION
Operator in MariaDB, kann folgender Fehler auftreten:„ERROR 1222 (21000):Die verwendeten SELECT-Anweisungen haben eine andere Anzahl von Spalten“.
Dieser Fehler tritt auf, wenn die Anzahl der Spalten, die von jedem SELECT
zurückgegeben werden Aussage ist anders.
Um dies zu beheben, stellen Sie sicher, dass sowohl SELECT
Anweisungen geben die gleiche Anzahl von Spalten zurück.
Fehlerbeispiel
Hier ist ein Codebeispiel, das den Fehler erzeugt:
SELECT TeacherName FROM Teachers
UNION
SELECT StudentId, StudentName FROM Students;
Ergebnis:
ERROR 1222 (21000): The used SELECT statements have a different number of columns
Hier das erste SELECT
-Anweisung gibt eine Spalte zurück (TeacherName
), aber das zweite SELECT
-Anweisung gibt zwei Spalten zurück (StudentId
und StudentName
).
Lösung
Die Lösung besteht darin, sowohl SELECT
sicherzustellen Anweisungen geben die gleiche Anzahl von Spalten zurück
Mit dem obigen Beispiel können wir also entweder die zusätzliche Spalte aus unserem zweiten SELECT
entfernen Aussage:
SELECT TeacherName FROM Teachers
UNION
SELECT StudentName FROM Students;
Oder wir können dem ersten SELECT
eine weitere Spalte hinzufügen Aussage:
SELECT TeacherId, TeacherName FROM Teachers
UNION
SELECT StudentId, StudentName FROM Students;
Beachten Sie, dass Sie je nach gewählter Option unterschiedliche Ergebnisse erhalten können. Dies liegt daran, dass UNION
gibt standardmäßig unterschiedliche Zeilen zurück. Wenn wir eine weitere Spalte hinzufügen, besteht die Möglichkeit, dass eine zuvor duplizierte Zeile jetzt zu einer eindeutigen Zeile wird, abhängig vom Wert in der zusätzlichen Spalte.
Wir können auch UNION ALL
verwenden , die doppelte Werte zurückgibt:
SELECT TeacherId, TeacherName FROM Teachers
UNION ALL
SELECT StudentId, StudentName FROM Students;
Dies könnte auch andere Ergebnisse als die anderen Beispiele zurückgeben.