2014-09-23 61 views
0

如果像ALL(某些子查詢)那樣處於ALL opertar的子查詢返回空集,那麼它總是返回TRUE。像那樣:SELECT * FROM some_table WHERE TRUE = ALL(空集)。如何改變這種行爲?ALL and empty set = TRUE

回答

1

如果在子查詢:

ALL (SELECT ...) 

返回空集,結果是NULL

regress=> select all(SELECT true WHERE false); 
bool 
------ 

(1 row) 

如果你想真正的,你必須使用​​3210。由於語法限制,您不能直接使用all作爲表達式,所以您必須將其包裝在子查詢中,如:

regress=> select coalesce((select all(SELECT true WHERE false)), true); 
coalesce 
---------- 
t 
(1 row) 
相關問題