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

SQL :comment utiliser UNION et ordonner par une sélection spécifique ?

Vous voulez faire ceci :

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

Mettre à jour

J'ai remarqué que même si vous avez deux tables différentes, vous joignez les ID, c'est-à-dire si vous avez 1 dans les deux tables, vous obtenez une seule occurrence. Si c'est le comportement souhaité, vous devez vous en tenir à UNION . Sinon, passez à UNION ALL .

Je remarque donc également que si vous modifiez le code que j'ai proposé, vous commencerez à obtenir les deux 1 et 2 (des deux a et b ). Dans ce cas, vous pouvez remplacer le code proposé par :

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