Se você está recebendo "Erro:em preparação, SELECTs à esquerda e à direita de UNION não têm o mesmo número de colunas de resultado..." ao tentar usar o
UNION operador no SQLite, é porque um dos SELECT declarações está retornando mais colunas do que o outro. Quando você usa o
UNION operador, ambos SELECT instruções devem retornar o mesmo número de colunas. Para corrigir esse problema, certifique-se de que o
SELECT instruções retornam o mesmo número de colunas. Exemplo de erro
Aqui está um exemplo de código SQL que produz o erro:
SELECT TeacherName FROM Teachers
UNION
SELECT StudentId, StudentName FROM Students; Resultado:
Erro:na preparação, SELECTs à esquerda e à direita de UNION não possuem o mesmo número de colunas de resultado (1)
Aqui, o primeiro
SELECT retorna uma coluna (TeacherName ), mas o segundo SELECT retorna duas colunas (StudentId e StudentName ). Solução
A maneira de corrigir esse problema é garantir que
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; Resultado:
Nome do Professor-----------Ben Bill Cathy Ein Faye Jet Spike Warren
Ou podemos adicionar outra coluna ao primeiro
SELECT demonstração:SELECT TeacherId, TeacherName FROM Teachers
UNION
SELECT StudentId, StudentName FROM Students; Resultado:
ProfessorId TeacherName --------- -----------1 Faye 1 Warren 2 Ben 2 Jet 3 Cathy 3 Spike 4 Cathy 4 Ein 5 Bill 5 Warren 6 Bill>
Tenha em mente 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; Resultado:
ProfessorId TeacherName --------- -----------1 Warren 2 Ben 3 Cathy 4 Cathy 5 Bill 6 Bill 1 Faye 2 Jet 3 Spike 4 Ein 5 Warren 6 Bill