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

为何执行结果会有所差别,求答案

2012-10-13 
为什么执行结果会有所差别,求答案。SQL codeSQL select empno,dept.deptno,dname2from emp,dept3where emp

为什么执行结果会有所差别,求答案。

SQL code
SQL> select empno,dept.deptno,dname  2  from emp,dept  3  where emp.deptno(+)=dept.deptno and emp.deptno(+)=10;     EMPNO     DEPTNO DNAME---------- ---------- --------------      7782         10 ACCOUNTING      7934         10 ACCOUNTING      7839         10 ACCOUNTING                   20 RESEARCH                   30 SALES                   40 OPERATIONS已选择6行。  1  select empno,emp.deptno,dname  2  from emp,dept  3* where emp.deptno(+)=dept.deptno and emp.deptno(+)=10SQL> /     EMPNO     DEPTNO DNAME---------- ---------- --------------      7782         10 ACCOUNTING      7934         10 ACCOUNTING      7839         10 ACCOUNTING                      RESEARCH                      SALES                      OPERATIONS已选择6行。


两个都是右连接,唯一的不同是上面查询语句是“dept.deptno”,而下面是“emp.deptno”。造成结果中deptno显示的不同。出现结果的原因是什么?

[解决办法]
就应该是这样呀,选择哪个表的字段显示的就是哪个表的值呀。

[解决办法]
前一个select,选择的是emp中的deptno,自然之友10了
后一个select选择的dept中的deptno,由于是右链接,自然会显示其他的deptno值
[解决办法]
一个是显示左表字段值 一个是显示右表字段值 

如果使用左连接的时候 右表存在对应关系 那么会显示对应右表的值 如果不存在对应关系 那么只会显示左表字段值 右表值全部为空
[解决办法]
你改成select * from ...把全部列显示出来,就知道了。
[解决办法]
emp.deptno(+)=10
这个已经把emp.deptno的只保留了10部门的了,
emp.deptno(+)=dept.deptno
这个右外链,保留了deptno所有部件的编号,
[解决办法]
楼上正解。

热点排行
Bad Request.