sql - 返回特定值后的短路 Postgres 查询
问题描述
目前有一个形式的查询:
SELECT myFunc(col1) FROM myTable;
myFunc
返回一个bool
值。是否可以短路查询执行,以便查询将在第一次结束时myFunc
返回具有值的行true
?执行查询的顺序无关紧要,只要发现函数的一次执行是true
.
EXISTS
不起作用,因为它只测试是否有返回的行;但myFunc
总是返回一个值(true
或false
),因此EXISTS
对识别上述停止条件没有帮助。
解决方案
尝试这个
select mf
from (SELECT myFunc(col1) as mf FROM myTable) t
where mf limit 1;
我认为优化器会展平查询并完全满足您的需求。
或使用exists
@JasonGoemaat 建议:
select exists
(
select from myTable where myFunc(col1)
);
推荐阅读
- curl - 在google colab中使用curl下载TTF文件,导致文件格式未知
- jquery - Ajax 获取 URL jQuery
- python - 正确应用 numpy 数组维度
- excel - 如何忽略切片器并仍然对 FY 求和
- python - AttributeError:尝试在树莓派中加载保存的张量流模型时,“str”对象没有属性“decode”
- amazon-web-services - 如何让 AWS Toolkit 对不在项目目录中的 .go 文件的 lambda 进行本地调试?
- r - dplyr:如何过滤忽略空值
- vuejs3 - 如何使用 vcalendar 捕获日期更改?
- excel - MS Access:将多个查询导出到单独的 Excel 文件中
- asp.net-mvc - 关于 Wix 域和 IIS Windows Server 的问题