首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

求问一个关于exists的有关问题

2012-06-05 
求问一个关于exists的问题SQL select ename,empno,mgr from emp owhere exists(select 3 from emp where

求问一个关于exists的问题
SQL> select ename,empno,mgr from emp o where exists(select 3 from emp where mgr=o.empno);

ENAME EMPNO MGR
---------- ---------- ----------
FORD 7902 7566
BLAKE 7698 7839
KING 7839
JONES 7566 7839
SCOTT 7788 7566
CLARK 7782 7839

6 rows selected.
用户是oracle的试验用户scott

这种为什么会有数据返回 子查询的语句是0 rows 而且在emp表中也没有MGR=EMPNO的相应行 怎会出现这6行返回的


[解决办法]
这个查询的意思不是emp表中有没有MGR=EMPNO的相应行,而是emp表中empno列与mgr列有没有值相同的。
这个查询查的是 emp表中的empno在mgr列中能找到匹配值的数据行
[解决办法]
exists是在两个表中做loop循环。首先取出一个mgr值,在empno中找对应的值,当找到第一个对应的值后结束loop。再取下一个mgr值开始loop。所以最后显示6行数据。

热点排行