SQL相关子查询

之前了解过一点相关子查询概念,还不熟悉;

相关子查询:先执行主查询,再针对主查询返回的每一行数据执行子查询,如果子查询能够返回行,则这条记录就保留,否则就不保留。

看一下;查询所有是领导的员工信息;

select * from emp e1 where exists (select * from emp e2 where e1.empno=e2.mgr);

这句是相关子查询;看上去应该是它的子查询里面包括2个表的一个字段的比较,要使用exists;

这个相关子查询也可以写为非相关子查询;

select * from emp where EMPNO in (select mgr from emp);

sql 复制代码
insert into emp (ename, job, mgr, hiredata, salary, deptno) values ('李一','技术部经理', 0, '',22000, 1);
insert into emp (ename, job, mgr, hiredata, salary, deptno) values ('李二','工程师', 1, '',12000, 1);
insert into emp (ename, job, mgr, hiredata, salary, deptno) values ('李三','初级工程师', 1, '',2000, 1);
insert into emp (ename, job, mgr, hiredata, salary, deptno) values ('李四','市场部经理', 0, '',18000, 2);
insert into emp (ename, job, mgr, hiredata, salary, deptno) values ('王一','业务员', 4, '',8000, 2);

select * from emp;

select * from emp e1 where exists (select * from emp e2 where e1.empno=e2.mgr);

select * from emp where EMPNO in (select mgr from emp);

应该是除了相关子查询之外的子查询都是非相关子查询;

相关推荐
白鲸开源1 小时前
收藏!史上最全 Apache SeaTunnel Source 连接器盘点 (2025版),一篇通晓数据集成生态
大数据·数据库·开源
MonKingWD1 小时前
MySQL事务篇-事务概念、并发事务问题、隔离级别
数据库·后端·mysql
Java水解1 小时前
深入理解 SQL 中的 COALESCE、NULLIF 和 IFNULL 函数
后端·sql
我科绝伦(Huanhuan Zhou)2 小时前
银河麒麟V10一键安装Oracle 11g脚本分享
数据库·oracle
秋千码途3 小时前
一道同分排名的SQL题
数据库·sql
似水流年流不尽思念5 小时前
MySQL 的 MVCC 到底解决了幻读问题没有?请举例说明。
mysql·面试
秋难降5 小时前
零基础学SQL(八)——事务
数据库·sql·mysql
Starry_hello world5 小时前
MySql 表的约束
数据库·笔记·mysql·有问必答
槲栎5 小时前
CentOS7中使用yum安装mysql
mysql
RestCloud6 小时前
ETLCloud中的数据转化规则是什么意思?怎么执行
数据库·数据仓库·etl