Quieres hacer esto:
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
Actualizar
Me di cuenta de que, aunque tiene dos tablas diferentes, une las ID, es decir, si tiene 1
en ambas tablas, solo obtiene una aparición. Si ese es el comportamiento deseado, debe ceñirse a UNION
. Si no, cambia a UNION ALL
.
Entonces, también noté que si cambia al código que propuse, comenzaría a obtener ambos 1
y 2
(de ambos a
y b
). En ese caso, es posible que desee cambiar el código propuesto a:
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