我不确定我的问题是否正确,但这正是我想要做的。
我有一个表errorlog
与字段link
,我有一个功能http_get
(基于pgsql-http
,给我status
的link
)
我相信我需要像这样做横向连接:
SELECT
el.link,
hg.status
FROM
errorlog AS el
LEFT OUTER JOIN LATERAL http_get(el.link) AS hg ON true
WHERE el.link IS NOT NULL ;
但它没有给我任何结果。如何将这样的函数应用于表?
errorlog
表:
+----+---------------------+
| id | link |
+----+---------------------+
| 1 | http://www.test.com |
+----+---------------------+
| 2 | http://www.link.com |
+----+---------------------+
pgsql-http:
https://github.com/pramsey/pgsql-http
更新:我尝试过这些查询:
SELECT
el.link,
(http_get(el.link)).status
FROM
errorlog AS el
WHERE el.link IS NOT NULL ;
结果:No records found.
SELECT
el.link,
hg.status
FROM
errorlog AS el, http_get(el.link) AS hg
WHERE el.link IS NOT NULL ;
结果:No records found.
但是,这有效:
select * from http_get('http://test.com')
您的查询必须至少为您提供与errorlog
一样多的结果行。如果没有,则一定有错误。
为什么不简单地调用SELECT
子句中的函数?
SELECT
el.link,
(http_get(el.link)).status
FROM
errorlog AS el
WHERE el.link IS NOT NULL ;
另外,函数调用总是隐式执行,因为LATERAL
和LEFT OUTER JOIN
在这里基本没用,所以如果你坚持执行横向函数,那么这样做:
SELECT
el.link,
hg.status
FROM
errorlog AS el, http_get(el.link) AS hg
WHERE el.link IS NOT NULL ;