gpt4 book ai didi

sql - PostgreSQL 继承 : get the record class name

转载 作者:行者123 更新时间:2023-11-29 12:12:00 25 4
gpt4 key购买 nike

我有一个基表 value_list,其中包含列 codevalueactive。我有一些表 vl_avl_bvl_c 等继承自 value_list

有没有办法在执行 SELECT * FROM base 时知道 child 来自哪个类(class)。

换句话说,我想要:

code | value |  active | class
-----+-------+---------+--------
1 | c | true | vl_a
3 | g | false | vl_b
5 | d | true | vl_a
7 | f | false | vl_c
2 | u | false | vl_c
2 | q | true | vl_b
8 | a | false | vl_a

这可能吗?

有关更多详细信息,请参见表格:

CREATE TABLE value_list(
code integer NOT NULL,
value character varying(50),
active boolean,
CONSTRAINT pkey PRIMARY KEY (code)
)

CREATE TABLE vl_a() INHERITS (value_list);
CREATE TABLE vl_b() INHERITS (value_list);
CREATE TABLE vl_c() INHERITS (value_list);

最佳答案

字典不会让你这样做,但你可以手动合并:

   select *,'vl_a' from vl_a
union all
select *,'vl_b' from vl_b
union all
select *,'vl_c' from vl_c

enter image description here

好吧,这给了它:

create or replace function uall() returns table ( code integer ,
value character varying(50),
active boolean,tablename text ) AS $$
declare
_i int;
_r record;
_t text := '';
begin
select distinct string_agg($s$select *,'$s$||table_name||$s$' from $s$||table_name,' union all ') into _t from information_schema.tables where table_name like 'vl_%';
return query execute _t;
end;$$ language plpgsql
;

select * from uall()

关于sql - PostgreSQL 继承 : get the record class name,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29166820/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com