sql - EXISTS在Oracle中如何工作,它与IN有什么区别?

标签 sql oracle

在阅读甲骨文书时,我很难理解条款Exists。这是我从书中拍的3张照片。

这是使用IN子句的第一个sql语句,我很容易理解它。

这是使用EXISTS子句的第二条sql语句,我不明白为什么在DEPTNO> 20的情况下为什么它返回所有行。

这是第三条sql语句,它们与第一条sql语句具有相同的行,它需要两个表的额外连接,我无法推理。

我尝试了Google“EXISTS ORACLE”,但大部分页面都在解释EXISTS和IN之间的区别,但没有解释EXISTS的工作原理。你们要麻烦解释一下吗?

最佳答案

这是有关这两种方法以及如何决定使用哪一种方法的详细说明:
http://www.techrepublic.com/article/oracle-tip-understand-the-difference-between-in-and-exists-in-subqueries/5297080

存在检查子查询是否返回结果。基本上,如果要接受子查询并单独执行,则返回至少一行,则条件为true。第三个查询添加了第二个条件,该条件将子查询链接到父查询,因此它检查特定人员的部门是否具有deptno> 20

关于sql - EXISTS在Oracle中如何工作,它与IN有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8875355/

相关文章:

php - 从 MySQL 表中获取数据并插入到另一个表中

sql - 无法使用只读用户登录 SQL Azure 数据库

sql - 通过 Oracle SQL 检索范围内的数字

SQL*Plus 不执行 SQL Developer 执行的 SQL 脚本

php - 如何在 while 循环内的 <li> 标记内创建一个自动递增的 ID?

php - 如何统计MySQL中最畅销的产品?

mysql - SQL 查询返回表中没有的内容

sql - PLSQL 从字符串中获取值

java - 数据更改通知性能影响

sql - Oracle Sql 如果存在则做这个否则做那个