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