PostgreSQL如何将一个SELECT的值用作另一个SELECT的表名

bgtovc5b  于 2023-03-08  发布在  PostgreSQL
关注(0)|答案(1)|浏览(251)

首先,我需要查询序列名称

SELECT pg_get_serial_sequence('user', 'user_id'); -- public.user_id_seq

然后,我需要查询最后一个值

SELECT last_value FROM public.user_id_seq ;

如何合并这两个查询?
我试了三种方法,但都不对
一个一个二个一个一个一个三个一个一个一个一个一个四个一个

oalqel3c

oalqel3c1#

不需要PL/pgSQL或动态SQL。
您可以使用query_to_xml()纯粹在SQL中执行此操作(类似于this answer

with xml_result as (
  select query_to_xml(format('select last_value from %s', seq_name), true, true, '') as data
  from pg_get_serial_sequence('public.user', 'user_id') as seq_name
)
select (xpath('/row/last_value/text()', data))[1]::text::bigint as last_value
from xml_result;

相关问题