Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Mantendo a ordem por em união de duas consultas ordenadas por


É muito simples:use UNION ALL em vez de 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 preserva a ordem conforme codificada.

UNION remove duplicatas e não garante a ordem. A maioria dos bancos de dados realmente classifica a saída (para facilitar a detecção de duplicatas).