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 分钟前
MySQL 学习二:数据库的操作
数据库·后端·mysql
大白的编程日记.25 分钟前
【MySQL】表的操作和数据类型
android·数据库·mysql
不秃的开发媛41 分钟前
Java开发入门指南:IDE选择与数据库连接详解
java·数据库·ide
专注API从业者41 分钟前
Scrapy 集成 JD API:一种高效且合规的商品数据采集方案
大数据·数据库·scrapy
好多171 小时前
《Redis的缓存策略》
数据库·redis·缓存
程序新视界2 小时前
创建数据库索引时,要考虑一下这5个维度
mysql
小蒜学长3 小时前
基于uni-app的蛋糕订购小程序的设计与实现(代码+数据库+LW)
java·数据库·spring boot·后端·小程序·uni-app
安然~~~3 小时前
mysql多表联查
android·数据库·mysql
乐世东方客3 小时前
使用my2sql进行mysql的binlog恢复数据
数据库·mysql
Ttang233 小时前
ES+MySQL实时搜索架构实战解析
mysql·elasticsearch·架构