pgsql 怎么查询出所有非分区表
时间: 2024-05-09 13:20:13 浏览: 180
PostgreSQL表分区和子表及删除所有的数据库表.zip
可以使用以下 SQL 查询语句来查询所有非分区表:
```
SELECT table_name
FROM information_schema.tables
WHERE table_schema = 'public'
AND table_type = 'BASE TABLE'
AND NOT EXISTS (
SELECT 1
FROM pg_partitioned_table
WHERE pg_partitioned_table.relid = (
SELECT oid
FROM pg_class
WHERE relname = table_name
)
);
```
该语句使用 `information_schema.tables` 和 `pg_partitioned_table` 进行联合查询。其中,`information_schema.tables` 表用于获取关于所有表的信息,`pg_partitioned_table` 表用于获取关于所有分区表的信息。
该查询语句首先选择 `public` 模式下的所有基本表(即非分区表),然后检查每个表是否在 `pg_partitioned_table` 中有对应的条目。如果没有,则说明该表不是分区表。最后,该语句返回所有非分区表的名称。
阅读全文