postgresql - 如何横向加入函数
问题描述
我不确定我的问题是否正确,但这就是我想要做的。
我有一个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')
解决方案
为什么不简单地调用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 ;
推荐阅读
- xslt - 从 xslt 1.0 中消除重复项
- c - 如何在 Eclipse 的工具栏中删除此启动配置栏?
- python - 根据特定标签在 Web 上抓取和打印所有名称和标签
- reactjs - 为什么我的一些 react 应用在切换路由时没有样式?
- java - 为什么我们可以用 Java 语法编写 Groovy 代码?
- java - 如何创建第二个微调器,其选项列表取决于第一个微调器的输入?
- scala - @ConfiguredJsonCodec 不适用于其他构造函数
- abap - 功能组与类
- javascript - 如何使用 JavaScript 或 jQuery 将表单滚动到视图中?
- java - 我在方法中更改了一个变量,如何访问更改后的变量?