当前位置: 首页 > news >正文

4.7 数据库:单行子查询和多行子查询

以查询的结果及记录的数量来划分子查询,按照结果集里边记录的数量去划分子查询,可以分为单行子查询和多行子查询。

1. 单行子查询和多行子查询

顾名思义的单行子查询,就是返回一行记录,多行子查询就是返回多行记录。

单行子查询比较简单,能出现在select子句,from子句和where子句里边。但是多行子查询只能出现在where子句和from子句里边。当一个子查询返回多行记录的时候,如果在from子句里边的那是绝对没有问题的。因为结果集可以当做一张临时表来跟其他的数据表做连接。所以子查询的结果有多少条,记录是无所谓的,反正也是当做临时表来处理。如果多行记录出现在where子句里边,我们可以用特殊的表达式符号来做判断。

因为select子句的其他字段的一条记录没法跟子查询的多条记录做合并。所以说select子句里边绝对不可以出现多行字查询。

问题1:如何用子查询查找FORD和MARTIN两个人的同事?

select
ename
from t_emp
where deptno in (select deptno from t_emp where ename in ("FORD","MARTIN")) and ename not in ("FORD","MARTIN")

in:就是等于这个结果集里边任何一个值

2.WHERE 子句中多行子查询

问题2:查询比 FORD 和MARTIN 底薪都高的员工信息

select
ename
from t_emp
where sal >= all
(select sal from t_emp where ename in("FORD","MARTIN")) and ename not in("FORD","MARTIN");

all:结果集中所有的

any:结果集中的任意一个

exists:把原来在子查询之外的条件判断写到子查询里面

原来在where子句里边,我们用条件与子查询的结果做判断,现在这个条件改到了exist关键字对应的那个子查询里边了

问题3:查询工资等级是 3级或者 4级的员工信息

select
ename,sal
from t_emp
where exists
(select ename from t_salgrade where sal between losal and hisal and grade in(3,4))


http://www.mrgr.cn/news/82894.html

相关文章:

  • springboot和vue项目前后端交互
  • 微服务框架,Http异步编程中,如何保证数据的最终一致性
  • SQL使用视图
  • Java深拷贝和浅拷贝
  • 分布式ID生成-雪花算法实现无状态
  • 采用标准化的方式开展设计-研发中运用设计模式
  • python学习笔记—14—函数
  • 【HarmonyOS-ArkTS语言】计算器的实现【合集】
  • 【C++面向对象——类与对象】Computer类(头歌实践教学平台习题)【合集】
  • MyBatis深入了解
  • 【C++数据结构——内排序】快速排序(头歌实践教学平台习题)【合集】
  • 机器学习基础-线性回归和逻辑回归
  • 机器学习基础-卷积的计算
  • 计算机网络与服务器
  • unity学习8:unity的基础操作 和对应shortcut
  • Vue 按键生成多个表单
  • 【C语言程序设计——入门】基本数据类型与表达式(头歌实践教学平台习题)【合集】
  • 现代密码学期末重点(备考ing)
  • 常见加密算法附JAVA代码案例
  • 【Javascript Day1】javascript基础
  • 《数据结构》期末考试测试题【中】
  • 最好用的图文识别OCR -- PaddleOCR(1) 快速集成
  • 信息科技伦理与道德2:研究方法
  • 安卓cpu调度优化
  • 【C语言程序设计——选择结构程序设计】求一元二次方程的根(头歌实践教学平台习题)【合集】
  • 【C++面向对象——继承与派生】派生类的应用(头歌实践教学平台习题)【合集】