从父表中选择行时显示子表名

时间:2015-11-07 16:47:56

标签: sql postgresql inheritance

我有一个带有4个子表的继承表 我如何知道特定行的源表?

2 个答案:

答案 0 :(得分:2)

来自PostgreSQL documentation on inheritance

  

通过与pg_class建立联接,您可以看到实际的表名:

SELECT p.relname, c.name, c.altitude
FROM cities c, pg_class p
WHERE c.altitude > 500 AND c.tableoid = p.oid;

在上面的示例中,p.relname将返回从中获取行的特定子表。

答案 1 :(得分:1)

使用系统列tableoid,它可用于任何表。
但您不需要加入pg_class。只需转换为regclass(然后转换为text,可选)。

SELECT tbl_id, tableoid::regclass::text AS source
FROM   tbl
WHERE  <some condition>;

相关: