A união funciona por coluna posição NÃO nome. Mas você não especificou a posição da coluna porque especificou
*
então está em alguma ordem escolhida pelo banco de dados, mas não escolhida por você. O nome do conjunto de resultados final é o nome das colunas na primeira consulta na união.
A correção é fácil:escreva os nomes de todas as colunas desejadas e certifique-se de manter a ordem consistente entre as três consultas.
As colunas NÃO são classificadas por nome (portanto, renomear as colunas não ajudará você), a ordem é alguma ordem interna no banco de dados.
Usando
*
é considerado uma prática ruim:você não sabe o que está recebendo e, se precisar apenas de algumas das colunas, use *
recupera mais dados do que o necessário, tornando as coisas mais lentas. BTW Nomear colunas como esta (por número) é uma prática de programação muito ruim. Como no mundo você mantém as coisas em ordem? Suas colunas têm números, suas tabelas têm números. Você está tentando escrever código ofuscado? Para garantir que ninguém mais possa trabalhar no seu código? Porque se você for, esta é uma maneira de fazê-lo.