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

SQL:como usar UNION e ordenar por um select específico?


Você quer fazer isso:
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

Atualizar

Percebi que mesmo tendo duas tabelas diferentes, você junta os IDs, ou seja, se você tiver 1 em ambas as tabelas, você está obtendo apenas uma ocorrência. Se esse for o comportamento desejado, você deve seguir UNION . Caso contrário, mude para UNION ALL .

Então eu também noto que se você mudar para o código que eu propus, você começaria a receber tanto 1 e 2 (de ambos a e b ). Nesse caso, você pode querer alterar o código proposto para:
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