首页 > 数据库 > mysql教程 > 多个集合返回函数在 PostgreSQL SELECT 子句中的行为如何?

多个集合返回函数在 PostgreSQL SELECT 子句中的行为如何?

DDD
发布: 2025-01-17 23:47:08
原创
686 人浏览过

How Do Multiple Set-Returning Functions Behave in a PostgreSQL SELECT Clause?

PostgreSQL SELECT 子句:多个集合返回函数的行为

PostgreSQL SELECT 子句中多个集合返回函数 (SRF) 的交互与版本相关。 理解这种行为对于可预测的查询结果至关重要。

PostgreSQL 10 及更高版本:

在 PostgreSQL 10 及后续版本中,SRF 在 列表中 标量表达式之前进行处理。 这在功能上等同于在 SELECT 子句中使用它们。系统迭代地生成输出行:首先使用每个 SRF 的初始结果,然后使用每个 SRF 的第二个结果,依此类推。LATERAL FROM

如果 SRF 返回不同的行数,则较短的结果将用

值填充,以匹配最长结果集的长度。这可确保所有输出行具有相同的列数。NULL

PostgreSQL 9.6 及更早版本:

旧版本(9.6 及以下)表现出不同的行为。输出行总数成为每个 SRF 生成的行计数的最小公倍数 (LCM)。 这可能会导致意外和潜在不可预测的结果,特别是当 SRF 结果集大小不共享公约数时。

最佳实践:

为了避免歧义并确保跨 PostgreSQL 版本的结果一致,强烈建议避免直接在

列表中使用多个 SRF,尤其是在较旧的 PostgreSQL 版本中。 SELECT 连接提供了一种更清晰、更可预测且跨版本兼容的方法来处理多个 SRF。LATERAL

进一步阅读:

  • PostgreSQL 10 手册: SELECT 列表中的设置返回函数
  • PostgreSQL 9.6 手册: 返回集合的 SQL 函数

以上是多个集合返回函数在 PostgreSQL SELECT 子句中的行为如何?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板