Когато използвате 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;
Това също може да върне различни резултати към другите примери.