我可以在 PostgreSQL 中跨表 select 数据吗?
Can I select data across tables in PostgreSQL?
我有一个具有多个模式的数据库。我不知道模式的名称,我只知道它们以“myschema_”为前缀。所有模式都是相同的,它们具有以下 table:
CREATE TABLE person
(
name VARCHAR(100),
age int
);
问题是,如何在所有模式中 select 人 table 的所有姓名?如果它可以像这样 return 每个记录的模式名称就更好了:
| schema | name |
|----------|-------|
|myschema_1| David |
|myschema_2| Peter |
你可以写一个为你写查询的查询。如果您使用 psql
,您可以使用 \gexec
来执行它:
SELECT string_agg(
format(
'SELECT name, age FROM %I.person',
schema_name
),
' UNION ALL '
)
FROM information_schema.schemata
WHERE schema_name LIKE 'myschema_%' \gexec
我有一个具有多个模式的数据库。我不知道模式的名称,我只知道它们以“myschema_”为前缀。所有模式都是相同的,它们具有以下 table:
CREATE TABLE person
(
name VARCHAR(100),
age int
);
问题是,如何在所有模式中 select 人 table 的所有姓名?如果它可以像这样 return 每个记录的模式名称就更好了:
| schema | name |
|----------|-------|
|myschema_1| David |
|myschema_2| Peter |
你可以写一个为你写查询的查询。如果您使用 psql
,您可以使用 \gexec
来执行它:
SELECT string_agg(
format(
'SELECT name, age FROM %I.person',
schema_name
),
' UNION ALL '
)
FROM information_schema.schemata
WHERE schema_name LIKE 'myschema_%' \gexec