如何在 postgresql 中使用不同的返回数据执行多个选择查询?
Posted
技术标签:
【中文标题】如何在 postgresql 中使用不同的返回数据执行多个选择查询?【英文标题】:how to extecute multiple select queries with different returning data in postgresql? 【发布时间】:2018-02-07 06:50:19 【问题描述】:我正在使用 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 integer) 并且它存在于两个表中
【问题讨论】:
【参考方案1】:我很想知道你的功能!您在这里真正需要什么。
回归问题: 我认为它会引发错误,因为 PostgreSQL 在查询中的表的 id (INPUT)、id (RETURN) 和 id 之间存在歧义。因此,如果可以,您可以将其命名为彼此不同,然后再次检查。
第二个想法,我对UNION QUERY有些担心。据我所知,当你想对彼此进行 UNION 2 查询时,两个查询的结果必须是相同的列和相同类型的列。
所以,我认为在您解决第一个问题后,该功能也无法运行。不过你可以先试试。
【讨论】:
以上是关于如何在 postgresql 中使用不同的返回数据执行多个选择查询?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 RECORD 在 PostgreSQL 中返回多行?
如何使用 Odoo 中的 ORM 连接到 PostgreSQL 中的另一个不同数据库?