1.列出至少有一个员工的所有部门。 group by ,having的用法
select deptno,dname from dept where deptno in(select deptno from emp group by deptno having count(*)>1);
2.列出薪金比“SMITH”多的所有员工。 (经典自连接)
1)select ename from emp where sal>(select sal from emp where ename like'SMITH'); //我觉得这里应该用=而不是用like
2)select X.ename from emp X join emp Y where X.sal>Y.sal where Y.ename='SMITH';
3.列出所有员工的姓名及其直接上级的姓名。
1)select e.ename from emp e join emp m on e.deptno=m.deptno;(自连接)
自连接会去掉King 空 这条记录
2)select ename,(select ename from emp where empno in(a.mgr)) from emp a;
显示:ename ename
XXX XXXX
XXX XXX
King