这是一个例子
T(A) = RENTED(A,C) / BOATS(C)
select distinct R1.A from RENTED R1
where not exists
(select * from SAILBOAT S
where not exists
(select * from RENTED R2
where R1.A = R2.A
and R2.C = S.C)
);
我的问题是,如果NOT EXISTS
只返回TRUE
或FALSE
,SELECT distinct R1.A
如何知道要返回哪些值?
例如这个 jsfiddle
如果存在数字= 5
,此查询将在数字列中返回所有内容答案 0 :(得分:1)
正如wildplasser和sqlvogel所提到的,子查询对外部查询中的每一行都执行一次。
子查询的结果( TRUE / FALSE )确定是否返回外部查询中的行。总是,外部查询的父键(标识符)列将在子查询中被引用,以检查其在其他表中是否存在。此引用使子查询成为“ correlated subquery ”。
请参阅更新后的fiddle。