我正在使用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 回答
我很想知道你的功能!你真的需要什么?
回归问题:我认为它会引发错误,因为PostgreSQL在id(INPUT),id(RETURN)和查询中的表id之间存在歧义 . 所以,如果可以,你可以将它命名为彼此不同,然后再次检查 .
第二个想法,我有点担心UNION QUERY . 据我所知,当你想要UNION 2相互查询时,两个查询的结果必须是同一列和相同类型的列 .
所以,我认为在你修复第一个问题后,该函数也无法运行 . 但你可以先试试 .