これを自動化するには、動的SQLが必要です
CREATE OR REPLACE FUNCTION f_multi_select()
RETURNS SETOF table1
LANGUAGE plpgsql AS
$func$
BEGIN
RETURN QUERY EXECUTE
(
SELECT string_agg(format('SELECT * FROM %I', tbl), ' UNION ALL ')
FROM (SELECT tbl FROM tablenames ORDER BY id) sub
);
END
$func$;
電話:
SELECT * FROM f_multi_select();
すべてのテーブルが同じ行タイプを共有していると仮定すると、関数の戻りタイプを定義するために任意のテーブルを選択できます。
ORDER BY
を使用してサブクエリをスローしました -テーブルの順序に意味がある場合。
関連: