gpt4 book ai didi

sql - Postgres 函数返回集

转载 作者:行者123 更新时间:2023-11-29 14:00:42 25 4
gpt4 key购买 nike

有人可以告诉我解决这个问题的正确方法吗?我不确定在这种情况下我应该使用函数还是 View 。

我有一个临时表,其中包含一些我需要在类似于以下的查询中搜索的帐号:

SELECT
tb1.accountNo,
tb2.name
FROM
joinTable jt
JOIN table1 tb1 ON jt.foreign-key1 = tb1.id
JOIN table2 tb2 ON jt.foreign-key2 = tb2.id
WHERE tb1.accountNo LIKE '%sub-string';

我在临时表中的帐号不完全匹配,但我需要从另一个表中提取信息。上面的查询在每个帐户的基础上工作,但我想要一些可以批量工作的东西。

我尝试过的一种方法是创建一个捕获连接的 View ,但我如何才能同时在多个账户中使用它来处理不准确的帐号?

另一种可能性是使用一个函数来遍历临时表并从查询中捕获信息。在这方面,我的问题是:如何建立一个结果集或表从函数返回?我是否必须创建一个临时表作为函数的一部分并在循环执行时将记录插入其中?有没有比使用 TYPE 更优雅的方法?这是我一直在试验的示例函数。

CREATE TYPE accName AS (accountNo VARCHAR(255), name VARCHAR(200));
CREATE OR REPLACE FUNCTION findMissingAccounts()
RETURNS SETOF accName AS
$$
DECLARE
tempacc RECORD;
BEGIN
FOR tempacc IN SELECT * from tempTable LOOP --non-complete account number
RETURN QUERY -- RETURN QUERY or RETURN NEXT?
SELECT
tb1.accountNo,
tb2.name
FROM
joinTable jt
JOIN table1 tb1 ON jt.foreign-key1 = tb1.id
JOIN table2 tb2 ON jt.foreign-key2 = tb2.id
WHERE tb1.accountNo LIKE '%tempacc';
END LOOP;
RETURN;
END;
$$ LANGUAGE 'plpgsql' STABLE

如有任何帮助,我们将不胜感激。

最佳答案

您是否尝试过在 LIKE 条件下加入表格?

SELECT
tb1.accountNo,
tb2.name,
tt.tempacc
FROM
joinTable jt
JOIN table1 tb1 ON jt.foreign-key1 = tb2.id
JOIN table2 tb2 ON jt.foreign-key2 = tb1.id
JOIN tempTable tt ON jt.accountNo LIKE '%'||tt.tempacc;

关于sql - Postgres 函数返回集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19846912/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com