当查询中包含的表之间有一对多的关系时,避免在SELECT子句中使用DISTICT,可以使用EXISTS替换。
点击(此处)折叠或打开
- --查询emp表中目前所有员工都在哪些部门工作(包括部门编号和部门名称)
- --使用DISTINCT(低效)
- SELECT DISTINCT d.deptno, d.dname FROM dept d, emp e WHERE d.deptno = e.deptno;
![](http://img.blog.itpub.net/blog/attachment/201401/14/17013648_1389658010TpqS.png?x-oss-process=style/bb)
点击(此处)折叠或打开
- --使用EXISTS(高效)
- select d.deptno, d.dname from dept d
- where exists (select 1 from emp e where e.deptno = d.deptno);
![](http://img.blog.itpub.net/blog/attachment/201401/14/17013648_1389658087A7iZ.png?x-oss-process=style/bb)
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/17013648/viewspace-1070238/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/17013648/viewspace-1070238/