首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Postgres函数从多个表返回Select * result

问Postgres函数从多个表返回Select * result
EN

Stack Overflow用户
提问于 2021-10-25 14:13:45
回答 1查看 48关注 0票数 0

我需要使用函数get_data(_id)返回"select * from table1 t1 join table2 t2 on t1.id = t2.t2id where t1.id = _id"。

我找到了解决方案:https://stackoverflow.com/a/11751557,但是有来自一个表的结果,我不能理解这是不是可以在这个查询中添加join来从多个表获得结果?

我试过了:

代码语言:javascript
复制
CREATE OR REPLACE FUNCTION get_data_test_2(_tbl_type anyelement,_tbl_type_2 anyelement, _id int)
  RETURNS SETOF anyelement
  LANGUAGE plpgsql AS
$func$
BEGIN
   RETURN QUERY EXECUTE format('
      SELECT *
      FROM  %s as s1  -- pg_typeof returns regtype, quoted automatically
      left join %s as s2 on s1.id = s2.t1id
      WHERE  id = s1.'||_id||''
    , pg_typeof(_tbl_type))
   USING  _id;
END
$func$;

但很明显,我需要动态地从连接表中获取所有列,而不设置显式的列名,这并不是UPD的主要问题。

EN

回答 1

Stack Overflow用户

发布于 2021-10-29 21:40:01

您可以尝试这样做:

代码语言:javascript
复制
CREATE OR REPLACE FUNCTION get_data_test_2(_tbl_type anyelement,_tbl_type_2 anyelement, _id int)
  RETURNS SETOF record
  LANGUAGE plpgsql AS
$func$
BEGIN
   RETURN QUERY EXECUTE format('
      SELECT *
      FROM  %s as s1
      left join %s as s2 on s1.id = s2.t1id
      WHERE  id = s1.'||_id
    , pg_typeof(_tbl_type)
    , pg_typeof(_tb2_type))
   USING  _id;
END
$func$;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69709604

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档