L'unione lavora per colonna posizione NON nome. Ma non hai specificato la posizione della colonna perché hai fatto *
quindi è in un ordine selezionato dal database, ma non selezionato da te.
Il nome del set di risultati finale è il nome delle colonne nella prima query nell'unione.
La soluzione è semplice:scrivi i nomi di tutte le colonne che desideri e assicurati di mantenere l'ordine coerente tra tutte e tre le query.
Le colonne NON sono ordinate per nome (quindi rinominare le colonne non ti aiuterà), l'ordine è un ordine interno nel database.
Usando *
è considerata una cattiva pratica:non sai cosa stai ricevendo e se hai bisogno solo di alcune colonne, usa *
recupera più dati del necessario, rendendo le cose più lente.
A proposito, le colonne di denominazione come questa (per numero) sono una pratica di programmazione molto scarsa. Come diavolo fai a mantenere le cose dritte? Le tue colonne hanno numeri, le tue tabelle hanno numeri. Stai provando a scrivere codice offuscato? Per assicurarti che nessun altro possa mai lavorare sul tuo codice? Perché se lo sei, questo è un modo per farlo.