Oracle
 sql >> Base de données >  >> RDS >> Oracle

Maintien de l'ordre par en union de deux requêtes ordonnées par

C'est très simple :utilisez UNION ALL au lieu 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 conserve la commande telle qu'elle est codée.

UNION supprime les doublons et ne garantit pas la commande. La plupart des bases de données trient en fait la sortie (pour faciliter la détection des doublons).