sql >> Databasteknik >  >> RDS >> Oracle

Upprätthålla ordningen genom i förening av två ordnade efter frågor

Det är väldigt enkelt:Använd UNION ALL istället för 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 bevarar ordningen som kodad.

UNION tar bort dubbletter och garanterar inte ordning. De flesta databaser sorterar faktiskt utdata (för att göra dubbelupptäckt lättare).



  1. Hur man listar alla databaser med ActiveRecord

  2. Avancerad SQL:Infoga utdata från den parameteriserade tabellvärderade funktionen i SQL-tabellen

  3. Hur många frågor är för många?

  4. Hur hittar jag definitionen av en namngiven begränsning i Oracle?