MariaDB
 sql >> Datenbank >  >> RDS >> MariaDB

Fix „ERROR 1222 (21000):The used SELECT Statements have a different number of columns“ bei Verwendung von UNION in MariaDB

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.