gpt4 book ai didi

sql - 如何使用单个查询 UNION 从另一个表中检索到的表列表?

转载 作者:行者123 更新时间:2023-11-29 12:07:15 25 4
gpt4 key购买 nike

我有一个包含 PostgreSQL 表列表的表:

|id|table |
|--|------|
|1 |table1|
|2 |table2|
|3 |table3|

我想从所有这些表的联合中选择(伪代码):

select * from union(select table from tablenames)

最佳答案

要自动执行此操作,您需要动态 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 加入了一个子查询 - 以防表的顺序有意义。

相关:

关于sql - 如何使用单个查询 UNION 从另一个表中检索到的表列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56830267/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com