SQL高手进!!

来源:百度知道 编辑:UC知道 时间:2024/06/07 06:47:53
请看如下一段代码:
update employeeinfo
set levels=levels+1
where '人事部'=
(select DeptName
from DeptInfo
where DeptInfo.DeptID=employeeinfo.DeptID)
在这里我觉得很奇怪,'人事部'究竟是属于employeeinfo表还是属于DeptInfo表的呀?请各位朋友详细一点解释这段代码好吗?谢谢.

这段代码这样写可能更好理解:
update employeeinfo
set levels=levels+1
where
(select DeptName
from DeptInfo
where DeptInfo.DeptID=employeeinfo.DeptID) = '人事部'

这段话的意思是
1。更新表 employeeinfo
2。表 employeeinfo 中的字段levels 的值自加1
3。更新的条件是:表 employeeinfo 中的字段DeptID 在 表DeptInfo中属于“人事部”

所以说,'人事部'既不属于employeeinfo表也不属于DeptInfo表,而是更新表 employeeinfo 的限制条件。这个限制条件是通过表DeptInfo来传递的。

人事部 是属于表 employeeinfo 的 ...

里面的值是从表 DeptInfo 里面取出来的 ...

当employeeinfo表的deptID字段对应表Deptinfo的DeptName的值为'人事部'时
设置employeeinfo表的levels字段的值为levels+1

这是嵌套查询.
'人事部'属于employeeinfo表,这段语句的意思是:将employeeinfo表中符合条件的每个级别字段level都加1,
而所要符合的条件是'人事部',就是某些部门,而这些部门信息是从deptinfo表中查出的,
这段语句整体意思是:只要是employeeinfo表和deptinfo表中部门id(即deptid)相同的'人事部',这些部门所对应的员工级别都加1.

后面查询部分相当于
select DeptName from DeptInfo,employeeinfo
where DeptInfo.DeptID=employeeinfo.DeptID and DeptName='人事