SELECT UNION und ORDER BY in mysql .. wie?

8

Ich möchte aus einer einzigen Tabelle alle Zeilen holen, aber sie auf verschiedene Arten sortieren. Zum Beispiel schreibe ich

%Vor%

Es funktioniert, außer dass die zweite Reihenfolge von (FIELDB DESC) ignoriert wird ... Jemand weiß warum? Danke

    
stighy 04.07.2010, 16:09
quelle

2 Antworten

17

Der Operator UNION führt eine implizite Sortierung als Teil der Vereinigungsoperation aus (IIRC in den Schlüsselspalten).

Wenn Sie eine andere Sortierung im Ergebnis wünschen, müssen Sie ORDER BY auf die unionierte Auswahl anwenden.

In Ihrem Fall müssen Sie eine Möglichkeit haben, zwischen der ersten und der zweiten Auswahl zu unterscheiden, damit Sie die Vereinigung richtig ordnen können. Etwas wie (ungetestet):

%Vor%

Das Problem bei diesem Ansatz besteht darin, dass Duplikate für die drei Zeilen haben, die als Teil der ersten Abfrage in UNION ausgewählt wurden (da die Spalten nicht vollständig übereinstimmen).

Sind Sie sicher, dass Sie nicht stattdessen zwei SELECT -Statements verwenden können?

    
Ben M 04.07.2010, 16:11
quelle
1

Sie können das zweite SELECT als festes Ergebnis deklarieren.

%Vor%     
Antonis 21.06.2016 16:26
quelle

Tags und Links