Как объединить 2 запроса postgresql один без объединения или группирования результатов?
Изучаю Postgresql. Пытаюсь объединить два запроса в один. Но в основном примеры идут с объединением результатов.
А мне нужно просто два результата - общее количество строк в таблице с customerkey, и массив состоящий из 5 строк.
(уточняю, так как находила ответы о том, что существует авто подсчет, но это не подходит, так нужно чтобы COUNT посчитал все строки, а другой запрос вернул только пять)
Вот запросы: SELECT COUNT(*) FROM staff where customerkey = "9d18";
SELECT firstname, lastname FROM staff where customerkey='9d18' OFFSET 5 ROWS FETCH FIRST 5 ROW ONLY;
Заранее спасибо за помощь!
Ответы (2 шт):
Используйте UNION ALL. Только обратите внимание - чтобы использовать union all количество столбцов в обоих запросах должны совпадать
SELECT
'total count with custokerKey 9d18 is' as firstname,
COUNT(*) as lastname
FROM staff
where customerkey = "9d18";
union all
SELECT
firstname,
lastname
FROM staff
where customerkey='9d18'
OFFSET 5 ROWS FETCH FIRST 5 ROW ONLY;
У меня была задачка на Postgress. Если результат запроса возвращает данные то вернуть данные + количество строк либо вернуть одну строчку с количеством строк и без данных. Откуда возникла задача. Есть grid с поиском и пагинацией, если данные возвращаются то отобразить их на гриде с указанием страницы и всего страниц, если нет то отобразить выбранную пустую страницу с указанием страницы и общим количеством страниц.
CREATE FUNCTION summary_list(
in_login_id BIGINT,
in_sort_expression TEXT,
in_filter_condition TEXT,
in_skip BIGINT,
in_page_size BIGINT
)
RETURNS TABLE (
hidden_row_count BIGINT,
hidden_is_empty BOOLEAN,
data columns
....
)
AS $$
.....
FOR
data columns
....
IN SELECT
*
FROM data
OFFSET in_skip, in_page_size
LOOP
hidden_is_empty = false;
RETURN NEXT;
END LOOP;
IF hidden_is_empty THEN
RETURN NEXT ;
END IF;