Bạn muốn làm điều này:
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
Cập nhật
Tôi nhận thấy rằng mặc dù bạn có hai bảng khác nhau, nhưng bạn kết hợp các ID, điều đó có nghĩa là, nếu bạn có 1
trong cả hai bảng, bạn chỉ nhận được một lần xuất hiện. Nếu đó là hành vi mong muốn, bạn nên tuân theo UNION
. Nếu không, hãy đổi thành UNION ALL
.
Vì vậy, tôi cũng nhận thấy rằng nếu bạn thay đổi mã mà tôi đã đề xuất, Bạn sẽ bắt đầu nhận được cả hai 1
và 2
(từ cả a
và b
). Trong trường hợp đó, bạn có thể muốn thay đổi mã được đề xuất thành:
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