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

mysql union forkerte kolonner i resultat

Fagforening arbejder efter kolonne position IKKE navn. Men du har ikke angivet kolonnepositionen, fordi du gjorde * så det er i en eller anden rækkefølge plukket af databasen, men ikke plukket af dig.

Navnet på det endelige resultatsæt er navnet på kolonnerne i den første forespørgsel i foreningen.

Rettelsen er nem:Skriv navnene på alle de kolonner, du ønsker, og sørg for at holde rækkefølgen konsistent mellem alle tre forespørgsler.

Kolonnerne er IKKE sorteret efter navn (så det hjælper ikke dig at omdøbe kolonnerne), rækkefølgen er en intern rækkefølge i databasen.

Brug af * betragtes som dårlig praksis:Du ved ikke, hvad du får, og hvis du kun har brug for nogle af kolonnerne, skal du bruge * henter flere data end nødvendigt, hvilket gør tingene langsommere.

BTW At navngive kolonner som denne (efter nummer) er meget dårlig programmeringspraksis. Hvordan i alverden holder man tingene ved lige? Dine kolonner har tal, dine tabeller har tal. Forsøger du at skrive sløret kode? For at sikre, at ingen andre nogensinde kan arbejde på din kode? For hvis du er det, er dette en måde at gøre det på.



  1. Fejl opstår kun efter udgivelse:Kan ikke oprette forbindelse til nogen af ​​de angivne MySQL-værter.

  2. MySQL:unikt indeks, der ikke respekterer "null"-værdier

  3. Postgres VÆLG hvor WHERE er UUID eller streng

  4. java.lang.AbstractMethodError:com.mysql.jdbc.Connection.isValid(I)Z