Oracle
 sql >> Database >  >> RDS >> Oracle

Mantenimento dell'ordine in unione di due ordinati per query

È davvero semplice:usa UNION ALL invece di 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 conserva l'ordine come codificato.

UNION rimuove i duplicati e non garantisce l'ordine. La maggior parte dei database ordina effettivamente l'output (per facilitare il rilevamento dei duplicati).