1
Ich habe die folgende Tabelle:PostgreSQL - bedingte Bestellung
key | date | flag
--------------------------
1 now() true
2 now() - 1 hour true
3 now() + 1 hour true
4 now() false
5 now() - 1 hour false
6 now() + 1 hour false
ich die folgenden Sortier will:
- Zuerst wird alle Zeilen mit
flag = false
. Diese Zeilen müssen mitdate asc
sortiert werden. - Dann alle anderen Zeilen (
flag = true
). Diese Zeilen müssen jedoch mitdate desc
sortiert werden.
Ist die folgende Abfrage korrekt?
(
select *
from test
where flag = false
order by date asc
)
union all
(
select *
from test
where flag = true
order by date desc
)
Gibt es einen besseren Weg, dies zu tun? Wird die union all
die Zeilen sortiert halten und daher nur die Ausgabe der beiden inneren Abfragen verketten?
Ich kann nicht die Spalten in order by
, basierend auf einer Bedingung wiederholen.
Update
Fiddle finden Sie hier: http://rextester.com/FFOSS79584
bedingte Bestellung mit 'CASE' –
smth erfolgt wie 'order by flag, fall wenn flag dann date end desc, fall wenn nicht flag dann date asset asc' http://rextester.com/FDAY76293 –