sql >> Databasteknik >  >> RDS >> Mysql

mysql union fel kolumner i resultat

Union arbetar efter kolumn position INTE namn. Men du har inte angett kolumnpositionen eftersom du gjorde * så det är i någon ordning plockat av databasen, men inte plockat av dig.

Namnet på den slutliga resultatuppsättningen är namnet på kolumnerna i den första frågan i förbundet.

Korrigeringen är enkel:Skriv ut namnen på alla kolumner du vill ha, och se till att hålla ordningen konsekvent mellan alla tre frågorna.

Kolumnerna är INTE sorterade efter namn (så att byta namn på kolumnerna hjälper dig inte), ordningen är en intern ordning i databasen.

Använder * anses vara dålig praxis:Du vet inte vad du får, och om du bara behöver några av kolumnerna använder du * hämtar mer data än nödvändigt, vilket gör saker långsammare.

BTW Att namnge kolumner som denna (efter nummer) är väldigt dålig programmeringspraxis. Hur i hela friden håller man saker och ting rätt? Dina kolumner har siffror, dina tabeller har siffror. Försöker du skriva obfuskerad kod? För att se till att ingen annan någonsin kan arbeta med din kod? För om du är det, är detta ett sätt att göra det.



  1. Hur uppdaterar jag en tabell för att lägga till en primärnyckel och uppdatera alla befintliga rader med inkrementerade ID:n?

  2. Finns det ett FIND_IN_SET efter index i MySQL?

  3. Vilken funktion ska jag använda för att hasha lösenord i MySQL?

  4. Konvertera spara/uppdatera samtalsskenor till sql