如何横向连接函数

问题描述 投票:0回答:2

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

我有一个表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')

postgresql postgresql-10 lateral-join
2个回答
0
投票

您的查询必须至少为您提供与errorlog一样多的结果行。如果没有,则一定有错误。


0
投票

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

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

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

SELECT
    el.link,
    hg.status
FROM
    errorlog AS el, http_get(el.link) AS hg
WHERE el.link IS NOT NULL ;
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.