如何在 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 中的另一个不同数据库?

PostgreSQL喜欢不返回匹配的实例

如何在 Azure Databricks 中使用 JDBC 从 PostgreSQL 读取表数据?

PostgreSQL函数如何返回数据集 [转]

在执行 Select 查询时,如何忽略 Postgresql 中某列具有特定值的数据行?