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

SQL:come utilizzare UNION e ordinare tramite una selezione specifica?

Vuoi farlo:

select * from 
(
    SELECT id, 2 as ordered FROM a -- returns 1,4,2,3
    UNION
    SELECT id, 1 as ordered FROM b -- returns 2,1
)
order by ordered

Aggiorna

Ho notato che anche se hai due tabelle diverse, unisci gli ID, ciò significa che se hai 1 in entrambe le tabelle, ottieni solo un'occorrenza. Se questo è il comportamento desiderato, dovresti attenerti a UNION . In caso contrario, cambia in UNION ALL .

Quindi noto anche che se modifichi il codice che ti ho proposto, inizieresti a ricevere entrambi 1 e 2 (da entrambi a e b ). In tal caso, potresti voler cambiare il codice proposto in:

select distinct id from 
(
    SELECT id, 2 as ordered FROM a -- returns 1,4,2,3
    UNION
    SELECT id, 1 as ordered FROM b -- returns 2,1
)
order by ordered