Mysql
 sql >> Database >  >> RDS >> Mysql

mysql union colonne errate nel risultato

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.