1

我不确定我的问题是否正确,但这就是我想要做的。

我有一个errorlog带字段的表,link我有一个函数http_get(基于pgsql-http它给了我statuslink

我相信我需要像这样进行横向连接:

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')

4

2 回答 2

1

为什么不简单地调用SELECT子句中的函数呢?

SELECT
    el.link,
    (http_get(el.link)).status
FROM
    errorlog AS el
WHERE el.link IS NOT NULL ;

另外,函数调用总是隐式执行 asLATERAL和 aLEFT OUTER JOIN在这里基本没用,所以如果你坚持要横向执行函数,那么这样做:

SELECT
    el.link,
    hg.status
FROM
    errorlog AS el, http_get(el.link) AS hg
WHERE el.link IS NOT NULL ;
于 2019-03-11T08:03:13.840 回答
0

您的查询必须至少为您提供尽可能多的结果行errorlog。如果不是,那一定是有错误。

于 2019-03-11T07:21:19.280 回答