讲义和SQL脚本地址:https://github.com/dgfwork/MySQL_Notebook
1.取得每个部门最高薪水的人员名称
1 select 2 e.deptno,max(e.sal) as maxsal 3 from 4 emp e 5 group by 6 e.deptno 7 8 9 -- mysql> select 10 -- -> e.deptno,max(e.sal) 11 -- -> from 12 -- -> emp e 13 -- -> group by 14 -- -> e.deptno; 15 -- +--------+------------+ 16 -- | deptno | max(e.sal) | 17 -- +--------+------------+ 18 -- | 10 | 5000.00 | 19 -- | 20 | 3000.00 | 20 -- | 30 | 2850.00 | 21 -- +--------+------------+ 22 23 -- # 将以上查询结果当做一个临时表t(deptno,maxsal) 24 select 25 e.deptno, 26 e.ename, 27 t.maxsal, 28 e.sal 29 from 30 (select 31 e.deptno,max(e.sal) as maxsal 32 from 33 emp e 34 group by 35 e.deptno) t 36 37 join 38 emp e 39 on 40 e.deptno=t.deptno 41 where 42 t.maxsal=e.sal 43 44 -- mysql> select 45 -- -> e.deptno, 46 -- -> e.ename, 47 -- -> t.maxsal, 48 -- -> e.sal 49 -- -> from 50 -- -> (select 51 -- -> e.deptno,max(e.sal) as maxsal 52 -- -> from 53 -- -> emp e 54 -- -> group by 55 -- -> e.deptno) t 56 -- -> join 57 -- -> emp e 58 -- -> on 59 -- -> e.deptno=t.deptno 60 -- -> where 61 -- -> t.maxsal=e.sal; 62 -- +--------+-------+---------+---------+ 63 -- | deptno | ename | maxsal | sal | 64 -- +--------+-------+---------+---------+ 65 -- | 30 | BLAKE | 2850.00 | 2850.00 | 66 -- | 20 | SCOTT | 3000.00 | 3000.00 | 67 -- | 10 | KING | 5000.00 | 5000.00 | 68 -- | 20 | FORD | 3000.00 | 3000.00 | 69 -- +--------+-------+---------+---------+