如果所有opertar中的子查询(ALL(某些子查询))返回空集,那么它将始终返回TRUE。像那样:SELECT * FROM some_table WHERE TRUE = ALL(空集)。如何改变这种行为?
答案 0 :(得分:1)
如果子查询在:
ALL (SELECT ...)
返回空集,结果为NULL
:
regress=> select all( SELECT true WHERE false );
bool
------
(1 row)
如果您想要为true,则必须使用coalesce
。由于语法限制,您不能将all
直接用作表达式,必须将其包装在子查询中,例如:
regress=> select coalesce( (select all( SELECT true WHERE false )), true);
coalesce
----------
t
(1 row)