СУБД Postgresql есть таблица с городами и странами.
CREATE TABLE T (
id INTEGER,
town_country VARCHAR (255),
is_country bool
) ;--DEFAULT CHARSET=utf8 ;
INSERT INTO T
(id, town_country, is_country)
VALUES
(1, 'Франция', true),
(2, 'Германия', true),
(4, 'Россия', true),
(5, 'Канада', true),
(6, 'Бельгия', true),
(7, 'Беларусь', true),
(8, 'Австралия', true),
(9, 'Япония', true),
(10, 'Афины', null),
(11, 'Брюссель', null),
(12, 'Барселона', null)
SELECT *
FROM T
ORDER BY
is_country DESC NULLS LAST,
town_country ASC NULLS FIRST
Нужно написать несколько запросов, которые возвращают по 5 записей из этого списка. Начиная со 2 запроса, нужно в условие запроса передать последнюю запись, найденную в предыдущем запросе.
Первый запрос без условия:
SELECT *
FROM T
ORDER BY
is_country DESC NULLS LAST,
town_country ASC NULLS FIRST
LIMIT 5
Австралия Беларусь Бельгия Германия Канада
https://www.db-fiddle.com/f/SpTXQTSprkMr3syfk6DSE/0
Берем последнюю запись - Канада, нужно получить следующие 5 записей, которые находятся в списке под Канадой, например так
Второй запрос:
SELECT *
FROM T
where town_country > 'Канада'
ORDER BY
is_country DESC NULLS LAST,
town_country ASC NULLS FIRST
LIMIT 5
Проблема: возвращается только 3 записи (Россия, Франция, Япония), из-за использования сортировки is_country DESC NULLS LAST
Третим запросом нужно вернуть одну запись: Барселона
Как правильно написать 2 и 3 запросы, оставив такую сортировку, во 2 запросе нужно использовать последнюю запись из 1 запроса, в 3 запросе нужно использовать последнюю запись из 2 запроса?