回答

收藏

空运算符上的ALL运算符VS Any

技术问答 技术问答 300 人阅读 | 0 人回复 | 2023-09-14

我在读书ANY和ALL运算符的oracle文档。除了一件事,我非常了解它们的用途。它指出:
* o3 W4 S/ f2 s. m+ V2 k: g全部 :/ ?; k% P" H, j' B% g
如果子查询返回零行,则条件的计算结果为TRUE。6 f- B- g% t; ^5 N) O
任何 :5 k$ o* O$ G. M1 q9 J# `: M
如果子查询返回零行,则条件的计算结果为FALSE。
9 [0 O' n, s9 G* d+ T: t
在我看来,这不是很合逻辑。为什么在空子查询中ALL将返回TRUE,而ANY返回FALSE?
6 t; Q: |+ r+ W0 O我是SQL新手,所以我觉得会有一个用例来说明这种行为,对我来说真的是违背直觉的。
$ I2 Z' {0 k- o- K) n' L空集上的ANY和ALL应该返回相同的值吗?- z" H9 Y% w" a; h; E1 l  ?" U
                                                               
* W; }: Y1 g! o" K8 {    解决方案:                                                                & }8 l+ j) W  u/ L0 S. d
                                                                因为ANY将被解释为EXIST(如果存在,则表示存在)。因此,如果你找不到任何行,回去false。
/ E# Y6 @$ G& I! hAll它不能证明任何值,只能证明它代表所有可能值。因此,即使找不到线,也会返回true。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则