несколько таблиц, пусть их названия first_table, second_table…
Я выполняю запрос изменяя название таблицы несколько раз.
Как изменить запрос, чтобы update поисходил сразу для нескольких таблиц?
Ссылка на доку тоже приветствуется
DO $$
DECLARE
_r RECORD;
BEGIN
FOR _r IN
SELECT
id,
created_at,
finished_at
FROM
timeslices LOOP
UPDATE
first_table bb
SET
timeslice = _r.id
WHERE
bb.created_at >= _r.created_at
AND bb.created_at <= _r.finished_at;
END LOOP;
END;
$$
LANGUAGE plpgsql;
DO $$
DECLARE
_r RECORD;
BEGIN
FOR _r IN
SELECT
id,
created_at,
finished_at
FROM
timeslices LOOP
UPDATE
second_table bb
SET
timeslice = _r.id
WHERE
bb.created_at >= _r.created_at
AND bb.created_at <= _r.finished_at;
END LOOP;
END;
$$
LANGUAGE plpgsql;
Сунуть update в CTE (приставка WITH к SELECT), потом обращаться к нему в основном SELECT. Вообще, в первую очередь я бы на вашэм месте -- занялся отказом от LOOP (который медленный, по сравнению с SELECT).
спасибо за ответ!
Обсуждают сегодня