首页 文章

如何在postgresql中使用不同的返回数据扩展多个select查询?

提问于
浏览
0

我正在使用postgreql,我有两个表,我想对它们执行两个选择查询 . 从每个选择返回的数据是变化的!从第一个表返回的数据是:

id integer, first_name varchar, last_name varchar, email varchar, company varchar,positions varchar,address varchar,phone varchar

和第二个表返回:

group_contact_id integer, contact_id integer, group_id integer

我想在这样的函数中做到这一点:

create function findcontactbyid(id integer) returns table (id integer, first_name varchar, last_name varchar, email varchar, company varchar,positions varchar,address varchar,phone varchar, group_contact_id integer, contact_id integer, group_id integer) as $$
select * from cms_contact where id = $1
UNION ALL
select * from cms_groups_contacts where contact_id = $1
$$ language 'sql'

但我得到错误$ 1提到(id整数),它存在于两个表中

1 回答

  • 0

    我很想知道你的功能!你真的需要什么?

    回归问题:我认为它会引发错误,因为PostgreSQL在id(INPUT),id(RETURN)和查询中的表id之间存在歧义 . 所以,如果可以,你可以将它命名为彼此不同,然后再次检查 .

    第二个想法,我有点担心UNION QUERY . 据我所知,当你想要UNION 2相互查询时,两个查询的结果必须是同一列和相同类型的列 .

    所以,我认为在你修复第一个问题后,该函数也无法运行 . 但你可以先试试 .

相关问题