Мне нужно реализовать условный оператор SELECT
на основе результата другого оператора. Я не хочу создавать функцию для этой цели, но просто используя условный SELECT
.Условный оператор PostgreSQL
Мой неудачный подход выглядит, как показано ниже:
DO
$do$
BEGIN
IF SELECT count(*) FROM table1 < 1 THEN
SELECT * FROM table2;
RETURN QUERY;
ELSE
SELECT * FROM table3;
RETURN QUERY;
END IF;
END
$do$
Я мог бы добиться того же результата, проверяя результаты моего запроса в PHP и на этой основе выполнить еще один запрос, но мне интересно, если это это можно сделать только в PostgreSQL.
@NickBarnes Я редактировал пост: первый запрос должен рассчитывать результаты и основанный на том, что другой запрос должен возвращать результаты. Все запросы в моем конкретном случае довольно длинные, поэтому я решил заменить их более простым эквивалентом. Если вы спросите о столбцах, все 3 запроса будут иметь одинаковые столбцы. –
'return query' - это ** ** ** оператор. Это должно быть 'return query select ...' - но блок PL/pgSQL не может вернуть ничего, поэтому вы не можете использовать 'return query' там вообще –
@a_horse_with_no_name Хорошая точка, есть ли какой-либо возможный способ сделать PL/pgSQL возвращает запрос? –