Ao usar o
UNION operador no MariaDB, você pode encontrar o seguinte erro:“ERROR 1222 (21000):As instruções SELECT usadas têm um número diferente de colunas”. Este erro ocorre quando o número de colunas retornado por cada
SELECT afirmação é diferente. A maneira de corrigir isso é garantir que tanto
SELECT instruções retornam o mesmo número de colunas. Exemplo de erro
Aqui está um exemplo de código que produz o erro:
SELECT TeacherName FROM Teachers
UNION
SELECT StudentId, StudentName FROM Students; Resultado:
ERROR 1222 (21000): The used SELECT statements have a different number of columns
Aqui, o primeiro
SELECT retorna uma coluna (TeacherName ), mas o segundo SELECT retorna duas colunas (StudentId e StudentName ). Solução
A solução é garantir que tanto
SELECT instruções retornam o mesmo número de colunas Então, usando o exemplo acima, podemos remover a coluna extra do nosso segundo
SELECT demonstração:SELECT TeacherName FROM Teachers
UNION
SELECT StudentName FROM Students; Ou podemos adicionar outra coluna ao primeiro
SELECT demonstração:SELECT TeacherId, TeacherName FROM Teachers
UNION
SELECT StudentId, StudentName FROM Students; Esteja ciente de que você pode obter resultados diferentes dependendo da opção escolhida. Isso ocorre porque
UNION retorna linhas distintas por padrão. Quando adicionamos outra coluna, existe a possibilidade de que uma linha anteriormente duplicada agora se torne uma linha única, dependendo do valor da coluna extra. Também podemos usar
UNION ALL , que retorna valores duplicados:SELECT TeacherId, TeacherName FROM Teachers
UNION ALL
SELECT StudentId, StudentName FROM Students; Isso também pode retornar resultados diferentes para os outros exemplos.