Mysql
 sql >> Datenbank >  >> RDS >> Mysql

mysql union falsche spalten im ergebnis

Union arbeitet nach Spalte Position NICHT Namen. Aber Sie haben die Spaltenposition nicht angegeben, weil Sie * getan haben es ist also in einer bestimmten Reihenfolge von der Datenbank ausgewählt, aber nicht von Ihnen ausgewählt.

Der Name der endgültigen Ergebnismenge ist der Name der Spalten in der ersten Abfrage in der Union.

Die Lösung ist einfach:Schreiben Sie die Namen aller gewünschten Spalten auf und achten Sie darauf, dass die Reihenfolge zwischen allen drei Abfragen konsistent bleibt.

Die Spalten sind NICHT nach Namen sortiert (das Umbenennen der Spalten wird Ihnen also nicht helfen), die Reihenfolge ist eine interne Ordnung in der Datenbank.

Mit * gilt als schlechte Praxis:Sie wissen nicht, was Sie bekommen, und wenn Sie nur einige der Spalten benötigen, verwenden Sie * ruft mehr Daten als nötig ab, wodurch die Dinge langsamer werden.

Übrigens Das Benennen von Spalten wie dieser (nach Nummer) ist eine sehr schlechte Programmierpraxis. Wie um alles in der Welt hältst du die Dinge gerade? Ihre Spalten haben Zahlen, Ihre Tabellen haben Zahlen. Versuchen Sie, verschleierten Code zu schreiben? Um sicherzustellen, dass niemand sonst jemals an Ihrem Code arbeiten kann? Denn wenn ja, ist dies eine Möglichkeit, dies zu tun.