Du vill göra detta:
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
Uppdatera
Jag märkte att även om du har två olika tabeller så går du med i ID:n, det betyder att om du har 1 i båda tabellerna får du bara en förekomst. Om det är det önskade beteendet bör du hålla dig till UNION . Om inte, ändra till UNION ALL .
Så jag märker också att om du ändrar till koden jag föreslog, skulle du börja få både 1 och 2 (från båda a och b ). I så fall kanske du vill ändra den föreslagna koden till:
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