Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Beibehalten der Reihenfolge durch in Vereinigung von zwei bestellten nach Abfragen

Es ist ganz einfach:Verwenden Sie UNION ALL statt UNION .

SELECT * FROM (
SELECT   name,total,rate 
FROM     business b
WHERE rate > 100
ORDER BY total DESC) x
UNION ALL
SELECT * FROM (
SELECT   name,total,rate 
FROM     business b
WHERE  rate <= 100
ORDER BY rate ASC) y

UNION ALL behält die codierte Reihenfolge bei.

UNION entfernt Duplikate und garantiert keine Ordnung. Die meisten Datenbanken sortieren die Ausgabe tatsächlich (um die Erkennung von Duplikaten zu erleichtern).