日期:2014-05-17  浏览次数:21104 次

子查询可否用表连接代替?
设有关系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.aiyiweb.com/other/1391128.html