--列出至少有一个员工的所有部门
select d.dname from emp e,dept d
where e.deptno = d.deptno
group by d.dname having count(*)>1;
select e.deptno,d.dname from dept d,emp e
where e.deptno = d.deptno
group by e.deptno,d.dname;注释部分是题目,下面两条sql语句是我写的答案,请高手帮忙看下哪条sql语句效率高些,以及还有没有更好的写法,谢谢。
select d.dname from emp e,dept d
where e.deptno = d.deptno
group by d.dname having count(*)>1;
select e.deptno,d.dname from dept d,emp e
where e.deptno = d.deptno
group by e.deptno,d.dname;注释部分是题目,下面两条sql语句是我写的答案,请高手帮忙看下哪条sql语句效率高些,以及还有没有更好的写法,谢谢。
where e.deptno = d.deptno
group by e.deptno,d.dname; 这个语句能达到你的效果吗?
我觉得这样就可以了
select d.dname from emp e,dept d
where e.deptno = d.deptno
group by d.dname having count(*)>=1;
where e.deptno = d.deptno
group by d.deptno
如果还要部门名称的话这个就可以了,把group by后面名称改成编号是因为怕有重名的部门
不需要其它条件了,因为和职工表作连接,无职工的部门自动被滤掉了
where exists(select deptno from emp where emp.deptno=dept.deptno)这样试试