首页 > 解决方案 > 返回特定值后的短路 Postgres 查询

问题描述

目前有一个形式的查询:

SELECT myFunc(col1) FROM myTable;

myFunc返回一个bool值。是否可以短路查询执行,以便查询将在第一次结束时myFunc返回具有值的行true?执行查询的顺序无关紧要,只要发现函数的一次执行是true.

EXISTS不起作用,因为它只测试是否有返回的行;但myFunc总是返回一个值(truefalse),因此EXISTS对识别上述停止条件没有帮助。

标签: sqlpostgresql

解决方案


尝试这个

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

推荐阅读