Вы можете упорядочить результаты UNION, используя номер столбца в наборе результатов.Поэтому, если «id» - это первый столбец, возвращаемый из «select * from bookings», вы можете сделать это:
SELECT "bookings".* FROM "bookings"
WHERE "bookings"."guest_id" = 19317644
AND "bookings"."status" IN (0)
AND (created_at > '2017-10-04 05:27:29.740508')
UNION ALL
SELECT "bookings".* FROM "bookings"
WHERE "bookings"."guest_id" = 19317644
AND "bookings"."status" IN (1)
AND (created_at > '2017-10-04 05:27:29.740508')
ORDER BY 1
Что касается LIMIT, мне неясно, что вы хотите сделать: showтолько одна запись из каждого запроса или одна запись из результатов обоих запросов.
Наконец, я не уверен, что некоторые детали были потеряны, когда вы создавали свой пример, но это, вероятно, проще:
SELECT "bookings".* FROM "bookings"
WHERE "bookings"."guest_id" = 19317644
AND "bookings"."status" IN (0,1)
AND (created_at > '2017-10-04 05:27:29.740508')
ОБНОВЛЕНИЕ:
если выЕсли вы хотите показать всего одну запись, то вы можете просто добавить предложение LIMIT в конец оператора.Например:
create table foo (a int);
insert into foo (a) values (1);
create table bar (b int);
insert into bar (b) values (2);
select * from foo
union all
select * from bar
order by 1
limit 1