表A
Id imge
-- ----
1 1.jpeg
2 2.jpeg
1 1.jpeg
1 1.jpeg
o / p需要
id image
------------
1 1.jpeg
1.jpeg
1.jpeg
我创建了一个函数,
create or replace function(vid in integer,vimg out varchar) returns setof record as
$$
declare
im varchar;
begin
select image into im from tablea wher id=$1;
return query
select im;
$$
end;
plpgsql
但它不起作用。我需要在不使用数组和循环的情况下检索图像。
答案 0 :(得分:1)
您将函数声明为setof record
,这意味着它将返回任意数量的行。您需要重新声明该函数并更改内部选择以匹配返回类型。
或者我错了,我只是想念你要做的事。
答案 1 :(得分:1)
您可能正在寻找 GROUP_CONCAT()
SELECT GROUP_CONCAT(imge) as images
FROM TableA GROUP BY Id;
哦,我错过了。你在PostgreSQL,对吧? 别担心。 PostgreSQL中有一个与group_concat相同的东西: array_agg
SELECT id, array_agg(imge)
FROM TableA GROUP BY Id;
答案 2 :(得分:1)
我认为这样的简单函数最好用语言sql
代替plpgsql
:
create or replace function func(vid in integer)
returns table(vimg varchar)
as
$$
select imge from tablea where id=$1;
$$ language sql;
无论如何,要从函数返回多个记录,您可以返回table or setof record
。
<强> sql fiddle demo 强>