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