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