Sql 在oracle中使用子查询更新列
我有一个员工表如下:Sql 在oracle中使用子查询更新列,sql,oracle,Sql,Oracle,我有一个员工表如下: EMP_ID DEPT_ID 101 1 102 2 103 3 104 1 以及一个部门表,如下所示: DEPT_ID COUNTS 1 2 3 我想编写一个查询,计算属于某个部门的员工人数,并将其存储到department列表中,这样department表将如下所示: DEPT_ID COUNTS 1 2 2 1 3 1 解决办法是
EMP_ID DEPT_ID
101 1
102 2
103 3
104 1
以及一个部门表,如下所示:
DEPT_ID COUNTS
1
2
3
我想编写一个查询,计算属于某个部门的员工人数,并将其存储到department列表中,这样department表将如下所示:
DEPT_ID COUNTS
1 2
2 1
3 1
解决办法是
update department p
set counts = (select count(*) from EMPLOYEE e where p.dept_id = e.dept_id);
但我真的不明白它在内部是如何工作的,它如何知道它必须设置部门中的哪个部门ID计数。此子查询究竟返回什么“从员工e中选择计数(*),其中p.dept\u id=e.dept\u id”这称为相关子查询:
这是您的查询:
update department p
set counts = (select count(*) from EMPLOYEE e where p.dept_id = e.dept_id);
因此,内部查询将基于外部查询(即hasdepartment
table)执行。如果外部查询总共有3条记录,那么内部查询(即hasEMPLOYEE
table)将执行三次
在您的场景中,您已经从外部查询映射了带有
dept\u id
的查询,因此这将查找内部查询(即EMPLOYEE
表),并根据dept\u id
获取计数 谷歌“相关子查询”为什么使用mysql标签?