当前位置: 代码迷 >> Oracle管理 >> 子查询可不可以用表连接代替
  详细解决方案

子查询可不可以用表连接代替

热度:97   发布时间:2016-04-24 04:43:42.0
子查询可否用表连接代替?
设有关系EMP(ENO,ENAME,SALARY,DNO),其中各属性的含义依次为职工号、姓名、工资、所在部门。以及关系DEPT(DNO,DNAME,MANAGER),其中各属性含义依次为部门号、部门名称、部门经理的职工号。用SQL语句将“销售部”的那些工资数额低于600的职工的工资上调10%.
标准答案使用子查询。我如果不用子查询而直接把两个表连接起来可以吗?
UPDATE EMP
SET SALARY = 1.1*SALARY
WHERE EMP.DNO = DEPT.DNO
AND DNAME = "销售部"
AND SALARY < 600;

------解决方案--------------------
不行,你这样写,DEPT是不识别的,表名是只能在from字句中的
------解决方案--------------------
UPDATE EMP
SET SALARY = 1.1*SALARY
WHERE exists(select 1 from dept where EMP.DNO = DEPT.DNO
AND DNAME = '销售部')
AND SALARY < 600;

应该这样写吧,你说的‘不用子查询而直接把两个表连接起来’没太明白是啥意思。
代码迷推荐解决方案:软件开发者薪资,http://www.daimami.com/other/1391128.html
  相关解决方案