根据pgsql表内存储的表名查询对应的表数据
时间: 2024-05-04 21:18:31 浏览: 10
要根据表名查询对应的表数据,你可以使用 PostgreSQL 中的 SELECT 语句。下面是一个基本的示例:
```
SELECT * FROM table_name;
```
在这个示例中,`table_name` 是你想要查询的表的名称。`*` 表示你想要选择所有的列,你也可以明确指定要选择的列。
例如,如果你有一个名为 `employees` 的表,其中包含名字、年龄和工资等列,你可以使用以下语句来选择所有行和所有列:
```
SELECT * FROM employees;
```
如果你只想选择名字和工资这两列,你可以使用以下语句:
```
SELECT name, salary FROM employees;
```
这样就可以根据表名查询对应的表数据了。
相关问题
pgsql根据查询的数据动态连表查询
在 PostgreSQL 中,可以使用 WITH 子句和递归查询来动态连接表。具体步骤如下:
1. 使用 WITH 子句创建一个递归查询,该查询将返回需要连接的表名和连接条件。
2. 在主查询中,使用动态 SQL 来执行连接操作。可以使用 EXECUTE 语句来执行 SQL 查询,并将结果插入到一个临时表中。
以下是一个示例查询,演示了如何动态连接表:
```
WITH RECURSIVE table_list AS (
SELECT 'table1' AS table_name, 'id' AS join_column FROM dual
UNION ALL
SELECT 'table2' AS table_name, 'id' AS join_column FROM dual
),
temp_table AS (
SELECT * FROM table1
UNION ALL
SELECT * FROM table2
WHERE table2.id NOT IN (SELECT join_column FROM table_list)
)
EXECUTE 'SELECT * INTO temp_table FROM ' ||
(SELECT string_agg(table_name || ' JOIN ', '') || table_name
FROM table_list) || ' ON ' ||
(SELECT string_agg(table1.join_column || ' = ' || table2.join_column, ' AND ')
FROM table_list
INNER JOIN temp_table table1 ON table1.table_name = table_list.table_name
INNER JOIN temp_table table2 ON table2.table_name = table_list.table_name
WHERE table1.join_column <> table2.join_column);
```
在上面的示例中,我们首先定义了一个递归查询 table_list,该查询返回需要连接的表名和连接条件。然后,我们使用一个临时表 temp_table,它包含了第一个表 table1 的所有记录。最后,我们使用动态 SQL 来连接需要连接的表,并将结果插入到临时表 temp_table 中。
请注意,以上示例仅供参考,具体的查询语句需要根据实际需求进行修改。
pgsql查询所有表名
你可以使用以下的 SQL 查询来获取 PostgreSQL 数据库中所有表的名称:
```
SELECT table_name
FROM information_schema.tables
WHERE table_schema = 'public'
AND table_type = 'BASE TABLE';
```
这个查询会返回 public schema 中所有基础表的名称。你可以将 `public` 替换成你想要查询的 schema 名称,或者移除 `AND table_schema = 'public'` 这个限制条件来查询所有 schema 中的表名。