So erhalten Sie eine benutzerdefinierte Sortierreihenfolge für eine Union-Abfrage in Postgres

7

Mit einer Abfrage wie dieser (vereinfacht für Klarheit):

%Vor%

Ich möchte die Reihenfolge der resultierenden Zeilen anpassen. Etwas wie:

%Vor%

Oder

%Vor%

Aber Postgres beschwert sich mit:

%Vor%

Habe ich eine Alternative?

    
Dave 24.06.2015, 10:01
quelle

3 Antworten

16

Wrap es in eine abgeleitete Tabelle (was ist " HINT: .... oder verschieben Sie die UNION in eine FROM-Klausel " schlägt vor)

%Vor%     
a_horse_with_no_name 24.06.2015, 10:26
quelle
10

Ich würde eine zusätzliche Spalte hinzufügen, die die gewünschte Reihenfolge anzeigt, und dann Ordnungsspaltenpositionen in ORDER BY verwenden, z. B.

%Vor%

Beachten Sie, dass Sie wahrscheinlich auch UNION ALL möchten, da Ihre hinzugefügten Spalten sicherstellen, dass jeder Satz in der Union trotzdem anders sein muss.

    
Craig Ringer 24.06.2015 10:27
quelle
0

Wenn Sie eine zusätzliche Spalte für die Reihenfolge hinzufügen, bewirkt dies jedoch, dass die UNION-Klausel genau wie eine UNION ALL funktioniert (doppelte Zeilen werden nicht aus dem Ergebnis entfernt).

    
Pankus 07.02.2016 21:26
quelle

Tags und Links