L'union fonctionne par colonne position PAS de nom. Mais vous n'avez pas spécifié la position de la colonne car vous avez fait *
donc c'est dans un ordre choisi par la base de données, mais pas choisi par vous.
Le nom du jeu de résultats final est le nom des colonnes de la première requête de l'union.
La solution est simple :écrivez les noms de toutes les colonnes souhaitées et assurez-vous de conserver un ordre cohérent entre les trois requêtes.
Les colonnes ne sont PAS triées par nom (donc renommer les colonnes ne vous aidera pas), l'ordre est un ordre interne dans la base de données.
Utilisation de *
est considéré comme une mauvaise pratique :vous ne savez pas ce que vous obtenez, et si vous n'avez besoin que de certaines colonnes, utilisez *
récupère plus de données que nécessaire, ce qui ralentit les choses.
BTW Nommer des colonnes comme celle-ci (par numéro) est une très mauvaise pratique de programmation. Comment dans le monde gardez-vous les choses droites? Vos colonnes ont des nombres, vos tables ont des nombres. Essayez-vous d'écrire du code obfusqué ? Pour vous assurer que personne d'autre ne pourra jamais travailler sur votre code ? Parce que si vous l'êtes, c'est une façon de le faire.