我正在使用postgre sql和phpPgAdmin作为我的数据库。
我有一个表格,我在其中添加了一些表名,如:
table_lsts
id name tablename
11 abbc table1
22 xyyz table2
33 deef table3
现在在table1,table2,table3中我有多条记录,其中有一个名为vpvc_id的公共列。
我的问题是我必须编写一个查询,首先从table_lsts获取所有表名。
然后计算那些表中的记录,其中vpvc_id在(某些ID )等
任何人都可以帮忙吗?
答案 0 :(得分:1)
尝试此功能:
CREATE OR REPLACE FUNCTION count_records (ids_lst character varying)
RETURNS integer AS
$BODY$declare
query character varying;
result integer;
BEGIN
-- First query that create a dynamic query on all tables of table_lsts
select into query 'select count(*) from (' || String_agg('select vpc_id from '||tablename,' UNION ALL ') || ') a where vpc_id in ('||ids_lst||')' from table_lsts ;
---execute dynamic query
execute query into result;
return result;
END;$BODY$
LANGUAGE plpgsql VOLATILE
并像这样使用它:
select count_records('2,5')