sql - 我可以在 PostgreSQL 中跨表选择数据吗?
问题描述
我有一个具有多个模式的数据库。我不知道模式的名称,我只知道它们以“myschema_”为前缀。所有模式都是相同的,它们具有下表:
CREATE TABLE person
(
name VARCHAR(100),
age int
);
问题是,如何从所有模式的人员表中选择所有名称?如果它可以像这样返回每条记录的模式名称,那就更好了:
| 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
推荐阅读
- scala - 如何使用 Spark Scala Dataframe 计算每列中重复值和唯一值的数量?
- javascript - 为什么console.log不能写提示信息?
- qt - 如何知道 QThread 是否正确退出或被终止?
- apache - 在 httpd.conf 中设置标头而不是在 .htaccess 中设置标头
- r - 运行 R 代码时出错“连接为 SYS 应为 SYSDBA 或 SYSOPER”。我需要将 R 连接到 oracle
- php - 是否可以在不分页的情况下获取 dynamodb 扫描结果的记录数?
- java - org.apache.solr.client.solrj.beans.BindingException:设置值时出现异常
- reactjs - React Native onPress 在使用模态时不起作用
- node.js - Node.js - Xml 解析
- cuda - 如何使用推力中的地图选择两个设备向量的加权平均值?