SQL 是面向目标的描述语言,其实不侧重实现过程的,那是数据库查询引擎实现的。
这个查询用了关联子查询,对应结果集是表示 部门的记录集,
而每个部门 通过关联子查询来返回 员工人数,对应每条部门记录, 子查询条件参数emp.deptno 取值是相应的 dept.deptno,
意思是 对于每行的部门记录的 dept.deptno ,子查询 返回相应的 count(*)
这里的子查询必须是单列,每次返回结果集最多一行。
SELECT dname 部门名称,
(select count(*) from emp where emp.deptno = dept.deptno) 人数
FROM dept;
/*
*其实也就是把子查询放在了外部查询的查询结果里面了
*而把子查询剥离出来就如下语句
*/
select count(*) from emp where emp.deptno in (select dept.deptno from FROM dept)
--子查询的where中有部分数据是从外部数据里面抽取出来的。
全表扫描,依次判断每条记录的sal是否大于子查询中得到的该职位的平均工资
满意请采纳。