我有一个函数,它通过output parameters将两个参数作为匿名复合类型返回。
我可以使用如下查询来访问各个列:
# select * from guess_user('Joe','Bloggs');
confidence | matchid
------------+---------
0.142857 | 1121
现在我想把这个函数的输出和一些数据结合起来:
# select firstname,lastname from users limit 5;
firstname | lastname
-----------+----------
Adam | Smith
Amy | Peters
Annette | Bloggs
Annie | Mills
Amanda | Hibbins
我正在寻找一个将输出以下内容的查询:
firstname | lastname | confidence | matchid
-----------+----------+------------+---------
Adam | Smith | |
Amy | Peters | |
Annette | Bloggs | |
Annie | Mills | |
Amanda | Hibbins | |
并使用使用该行中的名称调用guess_user的结果填充置信度和匹配and列。
我目前最接近的努力是:
# select firstname, lastname, guess_user(firstname, lastname) from users limit 5;
它返回:
firstname | lastname | guess_user
-----------+-----------+---------------
Angela | Abbott | (0.285714,3)
Amy | Allan | (0.285714,4)
Annette | Allison | (0.285714,5)
Annie | Ashworth | (0.285714,6)
Amanda | Baird | (0.285714,7)
有没有办法将guess_user输出拆分为单独的列?
发布于 2013-07-05 20:58:59
结合depesz和fazal的答案,这似乎是可行的:
select firstname, lastname, (guess_user(firstname, lastname)).*
from users
limit 5
发布于 2009-12-13 20:29:40
简单地把它做成这样:
select firstname, lastname, x.confidence, x.matchid
from
(
select firstname, lastname, guess_user(firstname, lastname) as x
from users
limit 5
) q;
发布于 2009-12-11 04:28:56
您需要更改您的函数to return a set -最后一个示例与您请求的功能完全相同。
https://stackoverflow.com/questions/1885727
复制相似问题