我有一个Postgres数据库,其中包含几个继承的表。我可以从父表中SELECT
获取其所有子项的结果,但需要获取每个结果源自的表的名称。
找到的方法here不起作用,因为我只查询一个表,并且不知道哪些孩子会提前出现在结果中。
答案 0 :(得分:13)
要识别特定行所在的表格,请使用tableoid
,就像您已经发现的那样
对regclass
的强制转换检索实际名称,如果当前search_path
需要,则自动进行模式限定。
SELECT *, tableoid::regclass::text AS table_name
FROM master.tbl
WHERE <some_condition>;
更多:
答案 1 :(得分:0)
这在section on inheritance的PostgreSQL文档中得到了解答。可以使用表格中隐藏的tableoid
列以及relname
中的pg_class
来添加包含表名称的列到结果中,如下所示:
SELECT t.*, p.relname FROM table t, pg_class p WHERE t.tableoid = p.oid;