Вы хотите сделать это:
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
Обновление
Я заметил, что, хотя у вас есть две разные таблицы, вы объединяете идентификаторы, это означает, что если у вас есть 1
в обеих таблицах, вы получаете только одно вхождение. Если это желаемое поведение, вы должны придерживаться UNION
. Если нет, измените на UNION ALL
.
Поэтому я также заметил, что если вы перейдете на предложенный мной код, вы начнете получать как 1
, так и 2
(как с a
, так и с b
). В этом случае вы можете изменить предложенный код на:
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