Когато използвате UNION оператор в MariaDB, може да срещнете следната грешка:„ГРЕШКА 1222 (21000):Използваните оператори SELECT имат различен брой колони“.
Тази грешка възниква, когато броят на колоните, върнати от всеки SELECT твърдението е различно.
Начинът да поправите това е да се уверите, че и двете SELECT операторите връщат същия брой колони.
Пример за грешка
Ето пример за код, който създава грешката:
SELECT TeacherName FROM Teachers
UNION
SELECT StudentId, StudentName FROM Students; Резултат:
ERROR 1222 (21000): The used SELECT statements have a different number of columns
Тук първият SELECT оператор връща една колона (TeacherName ), но вторият SELECT оператор връща две колони (StudentId и StudentName ).
Решение
Решението е да се гарантира и двете SELECT операторите връщат същия брой колони
Така че, използвайки горния пример, можем да премахнем допълнителната колона от нашия втори SELECT изявление:
SELECT TeacherName FROM Teachers
UNION
SELECT StudentName FROM Students;
Или можем да добавим друга колона към първия SELECT изявление:
SELECT TeacherId, TeacherName FROM Teachers
UNION
SELECT StudentId, StudentName FROM Students;
Имайте предвид, че можете да получите различни резултати в зависимост от това коя опция изберете. Това е така, защото UNION връща различни редове по подразбиране. Когато добавим друга колона, има възможност един по-рано дублиран ред да стане уникален ред, в зависимост от стойността в допълнителната колона.
Можем също да използваме UNION ALL , който връща дублиращи се стойности:
SELECT TeacherId, TeacherName FROM Teachers
UNION ALL
SELECT StudentId, StudentName FROM Students; Това също може да върне различни резултати към другите примери.