执行 from emp 再执行 where deptno=20 后: +-------+-------+---------+------+------------+---------+------+--------+ | EMPNO | ENAME | JOB | MGR | HIREDATE | SAL | COMM | DEPTNO | +-------+-------+---------+------+------------+---------+------+--------+ | 7369 | SMITH | CLERK | 7902 | 1980-12-17 | 800.00 | NULL | 20 | | 7566 | JONES | MANAGER | 7839 | 1981-04-02 | 2975.00 | NULL | 20 | | 7788 | SCOTT | ANALYST | 7566 | 1987-04-19 | 3000.00 | NULL | 20 | | 7876 | ADAMS | CLERK | 7788 | 1987-05-23 | 1100.00 | NULL | 20 | | 7902 | FORD | ANALYST | 7566 | 1981-12-03 | 3000.00 | NULL | 20 | +-------+-------+---------+------+------------+---------+------+--------+ 执行group by 后,产生3个临时表: +-------+-------+---------+------+------------+---------+------+--------+ | EMPNO | ENAME | JOB | MGR | HIREDATE | SAL | COMM | DEPTNO | +-------+-------+---------+------+------------+---------+------+--------+ | 7788 | SCOTT | ANALYST | 7566 | 1987-04-19 | 3000.00 | NULL | 20 | | 7902 | FORD | ANALYST | 7566 | 1981-12-03 | 3000.00 | NULL | 20 | +-------+-------+---------+------+------------+---------+------+--------+ +-------+-------+-------+------+------------+---------+------+--------+ | EMPNO | ENAME | JOB | MGR | HIREDATE | SAL | COMM | DEPTNO | +-------+-------+-------+------+------------+---------+------+--------+ | 7369 | SMITH | CLERK | 7902 | 1980-12-17 | 800.00 | NULL | 20 | | 7876 | ADAMS | CLERK | 7788 | 1987-05-23 | 1100.00 | NULL | 20 | +-------+-------+-------+------+------------+---------+------+--------+ +-------+-------+---------+------+------------+---------+------+--------+ | EMPNO | ENAME | JOB | MGR | HIREDATE | SAL | COMM | DEPTNO | +-------+-------+---------+------+------------+---------+------+--------+ | 7566 | JONES | MANAGER | 7839 | 1981-04-02 | 2975.00 | NULL | 20 | +-------+-------+---------+------+------------+---------+------+--------+ 执行select job,count(*) 读取第一张临时表的首行,并执行count(*)数出来第一张临时表有2行, 由此得到一个数据行 +---------+----------+ | job | count(*) | +---------+----------+ | ANALYST | 2 | +---------+----------+ 读取第二第三张临时表,得到 +-------+----------+ | job | count(*) | +-------+----------+ | CLERK | 2 | +-------+----------+ 和 +---------+----------+ | job | count(*) | +---------+----------+ | MANAGER | 1 | +---------+----------+ 最后把三个数据拼起来得到 +---------+----------+ | job | count(*) | +---------+----------+ | ANALYST | 2 | | CLERK | 2 | | MANAGER | 1 | +---------+----------+