Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 查询行从中继承的父级时获取行的源表的名称_Sql_Postgresql_Inheritance - Fatal编程技术网

Sql 查询行从中继承的父级时获取行的源表的名称

Sql 查询行从中继承的父级时获取行的源表的名称,sql,postgresql,inheritance,Sql,Postgresql,Inheritance,我有一个Postgres数据库,其中有几个表相互继承。我可以从父表中进行选择以从其所有子表中获取结果,但需要获取每个结果来源的表的名称 找到的方法不起作用,因为我只查询了一个表,并且不知道哪些子项将提前出现在结果中。这在PostgreSQL文档中的中得到了回答。可以使用表的hidden tableoid列以及pg_类中的relname将包含表名的列添加到结果中,如图所示: SELECT t.*, p.relname FROM table t, pg_class p WHERE t.tableoi

我有一个Postgres数据库,其中有几个表相互继承。我可以从父表中进行选择以从其所有子表中获取结果,但需要获取每个结果来源的表的名称


找到的方法不起作用,因为我只查询了一个表,并且不知道哪些子项将提前出现在结果中。

这在PostgreSQL文档中的中得到了回答。可以使用表的hidden tableoid列以及pg_类中的relname将包含表名的列添加到结果中,如图所示:

SELECT t.*, p.relname FROM table t, pg_class p WHERE t.tableoid = p.oid;

要标识特定行的源表,请使用,就像您已经发现的一样。 用于检索实际名称的转换,根据当前搜索路径在需要时自动对架构进行限定

更多:


现在对模式不太感兴趣,但是角色转换是个好主意。将查询缩短一点。
SELECT *, tableoid::regclass::text AS table_name
FROM   master.tbl
WHERE  <some_condition>;