您的位置:首页 > 数据库 > MySQL

mysql 子查询(五)之主查询和子查询可以不是同一张表

2018-02-27 22:19 274 查看
子查询必须跟主查询是同一张表吗?
不是。主查询和子查询可以不是同一张表。
示例:查询部门名称是sales的员工信息。
既然是查询员工信息,那么主查询就是查员工表。员工表里只有部门号,而部门表中有部门名称和部门号。子查询,就是查部门表中的部门号。即如下所示:select *
from emp
where deptno=(select deptno
from dept
where dname= sales)除了上述的办法解决这个问题外,我们还可以使用多表查询来解决这类问题。即如下所示:
select e.*
from emp e, dept d
where e.deptno=d.deptno and d.dname=sales那么,这2种方式我们该采用哪种呢?
首先,示例中,子查询有2次from,查询了2次数据库,而多表查询中只有1次from,查询了1次数据库。从理论上来说多表查询的效率是大于子查询的,但如果多表查询的笛卡尔集过大,子查询反而会比多表查询有更高的效率。
这2种方式,没有绝对的正确,应具体情况而定。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: