Podczas korzystania z UNION
operatora w MariaDB, może wystąpić następujący błąd:„BŁĄD 1222 (21000):Użyte instrukcje SELECT mają inną liczbę kolumn”.
Ten błąd występuje, gdy liczba kolumn zwrócona przez każdy SELECT
oświadczenie jest inne.
Sposobem na naprawienie tego jest upewnienie się, że obie opcje SELECT
oświadczenia zwracają tę samą liczbę kolumn.
Przykład błędu
Oto przykład kodu, który generuje błąd:
SELECT TeacherName FROM Teachers
UNION
SELECT StudentId, StudentName FROM Students;
Wynik:
ERROR 1222 (21000): The used SELECT statements have a different number of columns
Tutaj pierwszy SELECT
instrukcja zwraca jedną kolumnę (TeacherName
), ale drugi SELECT
instrukcja zwraca dwie kolumny (StudentId
i StudentName
).
Rozwiązanie
Rozwiązaniem jest zapewnienie obu opcji SELECT
oświadczenia zwracają tę samą liczbę kolumn
Korzystając z powyższego przykładu, możemy albo usunąć dodatkową kolumnę z naszego drugiego SELECT
oświadczenie:
SELECT TeacherName FROM Teachers
UNION
SELECT StudentName FROM Students;
Lub możemy dodać kolejną kolumnę do pierwszego SELECT
oświadczenie:
SELECT TeacherId, TeacherName FROM Teachers
UNION
SELECT StudentId, StudentName FROM Students;
Pamiętaj, że możesz uzyskać różne wyniki w zależności od wybranej opcji. Dzieje się tak, ponieważ UNION
domyślnie zwraca różne wiersze. Kiedy dodamy kolejną kolumnę, istnieje możliwość, że poprzednio zduplikowany wiersz stanie się teraz unikalnym wierszem, w zależności od wartości w dodatkowej kolumnie.
Możemy również użyć UNION ALL
, który zwraca zduplikowane wartości:
SELECT TeacherId, TeacherName FROM Teachers
UNION ALL
SELECT StudentId, StudentName FROM Students;
Może to również zwrócić inne wyniki w innych przykładach.