gpt4 book ai didi

sql - 如何使用选定的值作为 PostgreSQL 中另一个选择的表名

转载 作者:行者123 更新时间:2023-12-04 07:19:32 25 4
gpt4 key购买 nike

我有两个 coloms source_name 和 output_name 的表:

CREATE TABLE all_table(
source_name text,
target_name text
);
源名称是一些外部数据名称。目标名称是我的数据库中自动生成的表名。源名称和目标名称之间存在关系,每个源名称只有一个目标名称。
我在数据库中有附加表:
CREATE TABLE output_table_1(
first_name text,
second_name text,
birthday timestamp
);

CREATE TABLE output_table_2(
login text,
money int
);
在表“all_table”中,我有一些行:
|   source_name |    target_name |
|---------------|----------------|
| personal data | output_table_1 |
| login data | output_table_2 |
我想按源名称从正确的表中选择信息。所以我试过了
WITH selected_table AS (
SELECT target_name FROM all_table WHERE source_name='personal data'
)
SELECT * FROM selected_table;

And also

SELECT first_name FROM
(SELECT target_name FROM all_table WHERE source_name='personal data') AS out_table;
但是 Postgres 只打印出正确的目标名称
|    target_name |
|----------------|
| output_table_1 |
我想在我的查询中得到类似的信息
| first_name | second_name | birthday |
|------------|-------------|----------|
| FName1 | SName1 | Date1 |
| FName2 | SName2 | Date2 |
| FName3 | SName3 | Date3 |
| FName4 | SName4 | Date4 |
| ... | ... | ... |
我也试过这个查询
DO
$$
BEGIN
EXECUTE format('SELECT * FROM %s LIMIT 10', (SELECT target_name FROM all_table WHERE source_name='personal data'));
END;
$$ LANGUAGE plpgsql;
查询已执行,但什么也没发生。
在 Google 上冲浪没有任何用处。但是我在这方面很糟糕。

¯\(ツ)

最佳答案

如果要从 DO 块中获取数据,则需要定义用于查询的游标。

do
$$
declare
_query text ;
_cursor CONSTANT refcursor :='_cursor';
begin
_query:='Select * from '||(Select tab_name from ... where ..);
open _cursor for execute _query;
end;
$$;
fetch all from _cursor;

关于sql - 如何使用选定的值作为 PostgreSQL 中另一个选择的表名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68591213/

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