CDA持证人阿涛哥

2022-10-31   阅读量: 263

mysql学习23- exists子查询

扫码加入数据分析学习群

-- exists 子查询

-- 查询是否有工资=1250的员工,有则输出

select * from emp

where sal=1250;

select ename from emp b where exists (select * from emp a

where b.sal=1250);

-- 查询部门表有记录而员工表中没有记录的部门编号

select deptno from dept d where exists (select deptno from emp e where d.deptno=e.deptno);

##exists查询可以用in查询代替:

select deptno from dept where deptno in (select deptno from emp);

/* exists和in查询原理的区别:

exists:外表先进行循环查询,将查询结果放入exists的子查询中进行条件验证,确定外层查询数据是否保留

in :先查询内表,将内表的查询结果当做条件提供给外表查询语句进行比较

结论:

通过上面的优化策略分析和exists和in的查询原理的分析,将这两块内容结合起来其实就得出了我们想要的一个结论:


外层小表,内层大表(或者将sql从左到由来看:左面小表,右边大表): exists 比 in 的效率高

外层大表,内层小表(或者将sql从左到由来看:左面大表,右边小表): in 比 exists 的效率高 */


360.0000 3 0 关注作者 收藏

评论(0)


暂无数据

推荐课程