MySQL子查询

MYSQL——子查询&关联子查询 文章目录子查询标量子查询关联子查询 子查询 一次性的视图,将用来定义视图的select语句,直接用于from子句当中。需要为子查询定义名称 标量子查询 必须而且只能返回1行1列的结果,因此标量子查询的返回值可以用在=或者<>这样需要单一值的比较运算符之中。 在where子句中使用标量子查询 如果想要挑选售价大于平均单价的条件,但是不能使用如下语句,因为不能在where使用聚合函数 “... 阅读详情
含义:

出现在其他语句中的select语句,称为子查询或内查询;外部的查询语句,称为主查询或外查询。

分类:

按子查询出现的位置:
select后:仅支持标量子查询
from后:支持表子查询
where或having后(重点)::支持标量子查()、列子查询()、行子查询(使用较少)
exists后(相关子查询):表子查询
按结果集的行列数不同:
标量子查询(结果集只有一行一列)
列子查询(结果集只有一列多行)
行子查询(结果集有一行多列)
表子查询(结果集一般为多行多列)

一、where和having后面:

1、标量子查询(单行子查询):
#案例1:谁的工资比Abel高?
① 查询Abel的工资:

select salary
from employees where lastName = 'Abel';

② 查询员工的信息,满足salary > ①的结果:

select * 
from employees
where salary > (
	select salary
	from employees 
	where lastName = 'Abel'
);

#案例2:返回jobId与141号员工相同,salary比143号员工多的员工姓名、jobId和工资:
① 查询141号员工的jobId;

select jobId
from employees
where employeeId = '141';

② 查询143号员工的salary:

select salary
from employees
where employeeId = '143';

③ 查询员工姓名、jobId和工资,要求jobId = ①,salary > ②的结果:

select lastName, jobId, salary
from employees
where jobId = (
	select jobId
	from employees
	where employeeId = '141'
) and salary > (
	select salary
	from employees
	where employeeId = '143'
);

#案例3:查询公司工资最少的员工的lastName,jobId和salary:
① 查询公司的最少工资:

select min(salary)
from employees;

② 查询工资满足①的员工的lastName,jobId和salary:

select lastName,jobId,salary
from employees
where salary = (
	select min(salary)
	from employees
);

#案例4:查询最低工资大于50号部门最低工资的部门ID和其最低工资:
① 查询50号部门的最低工资:

select min(salary)
from employees
where departmentId = '50';

② 查询每个部门的最低工资:

select min(salary), departmentId
from employees
group by departmentId;

③ 筛选②的结果,要求min(salary) > ①:

select min(salary), departmentId
from employees
group by departmentId
having min(salary) > (
	select min(salary)
	from employees
	where departmentId = 50
);

2、列子查询(多行子查询):
#案例1:查询locationId是1400或1700的部门中的所有员工姓名
① 查询locationId是1400或1700的部门编号

select departmentId
from departments
where locationId in(1400,1700);

② 查询员工姓名,要求部门号是①中的某一个

select lastName
from employees
where departmentId in (
	select distinct departmentId
	from departments
	where locationId in(1400,1700)
);

#以上语句等价于:
select lastName
from employees
where departmentId = any (
	select distinct departmentId
	from departments
	where locationId in(1400,1700)
);

#案例2:查询其他工种中比jobId为‘IT_PROG’工种任一工资低的员工的工号、姓名、jobId和salary
① 查询jobId为‘IT_PROG’部门的任一工资;

select distinct salary
from employees
where jobId = 'IT_PROG'

② 查询员工的工号、姓名、jobId和salary,要求salary<①中的任一一个

select employeeId, lastName, jobId, salary
from employees
where salary < any(
	select distinct salary
	from employees
	where jobId = 'IT_PROG'
) and jobId <> 'IT_PROG';

# 以上语句等价于:
select employeeId, lastName, jobId, salary
from employees
where salary < (
	select max(salary)
	from employees
	where jobId = 'IT_PROG'
) and jobId <> 'IT_PROG';

#案例3:查询其他工种中比jobId为‘IT_PROG’工种所有工资低的员工的工号、姓名、jobId和salary

select employeeId, lastName, jobId, salary
from employees
where salary < all(
	select distinct salary
	from employees
	where jobId = 'IT_PROG'
) and jobId <> 'IT_PROG';

# 以上语句等价于:
select employeeId, lastName, jobId, salary
from employees
where salary < (
	select min(salary)
	from employees
	where jobId = 'IT_PROG'
) and jobId <> 'IT_PROG';

3、行子查询(结果集一行多列或多行多列):
#案例:查询员工编号最小并且工资最高的员工信息:
普通查询:
① 查询最小的员工编号:

select min(employeeId)
from employees

② 查询最高的工资:

select max(salary)
from employees

③ 查询员工信息:

select *
fromm employees
where employeeId = (
	select min(employeeId)
	from employees
) and salary = (
	select max(salary)
	from employees
);

行子查询:

select *
fromm employees
where (employeeId, salary) = (
	select min(employeeId), max(salary)
	from employees
);

特点:
① 子查询放在小括号内;
② 子查询一般放在条件的右侧;
③ 标量子查询一般搭配单行操作符(>、<、>=、<=、=、<>)使用;列子查询一般搭配多行操作符(in、any/some、all)使用;
④ 子查询的执行优先于主查询执行,主查询的条件用到了子查询的结果。

二、select后面:

仅支持标量子查询。
#案例1:查询每个部门的员工个数

select d.*, (
	select count(*)
	from employees
	where e.departmentId = d.departmentId
)
from departments d;

#案例2:查询员工号=102的部门名

select (
	select departmentName, e.departmentId
	from departments d
	inner join employees e
	on d.departmentId = e.departmentId
	where e.employeeId = 102
) 部门名
三、from后面:

将子查询结果充当一张表,要求必须起别名。
#案例:查询每个部门的平均工资的工资等级
① 查询每个部门的平均工资:

select AVG(salary) ag, departmentId
from employees
group by departmentId

② 连接①的结果集和jobGrades表,筛选条件:平均工资 between lowestSalary and highestSalary

select agDep.*, g.gradeLevel
from (select AVG(salary),departmentId
from employees
group by departmentId) agDep
inner join jobGrades g
on avgDep.ag between lowestSalary and highestSalary
四、exists后面(相关子查询):

exists (完整的查询语句)
结果:1或0。

select exists(
	select employeeId from employees
);

#案例:查询有员工的部门名:

select departmentName 
from departments d
where exists (
	select * 
	from employees e
	where d.departmentId = e.departmentId
);
// 以上查询语句等价于:
select departmentName 
from departments d
where departmentId in (
	select * 
	from employees
);
Nvidia Tesla A100 驱动安装方法 Nvidia Tesla A100 驱动安装方法 遇到的问题:以前安装tesla系列、geforce系列等gpu 驱动的时候,只需执行nvidiaxxxx.run驱动包或者安装nvidiaxxxx.rpm包即可,但遇到新的GPU Nvidia Tesla A100的时候,安装完驱动似乎不起作用,找了半天资料,原来需要以下步骤才可以使用; 阅读详情

相关推荐

Anylogic试用版密匙

#$%99dTMbLIj+hm/c9fn0suWlfQjdK9FzRH8oSbR Rbm3FEeONkF5mDLKHxhscEDBANDg4BSU2Oi6hErk TH/KzwiCtsM0jfD50uRsj60+gi9ifTlduwcpSr6a GtVSilXwF997xTVAoMLddqOzGQAbnSjBiJOBdm1Z 0QwwIEJynvYgckLfoEADzncIgNnJjYshWcmGh3s9 gTgyuQPlRBeTXfb+ZJPI1JGi4sAUljwdB53Df+AX SEf5FaIbih

qq_43939616的博客 8265

SQL子查询的一些例子

1、单行子查询        select ename,deptno,sal        from emp        where deptno=(select deptno from dept where loc=NEW YORK);      2、多行子查询        SELECT ename,job,sal        FROM EMP        WHERE deptno

天亮说晚安 14万+

Transformers 中的 Softmax 可以并行加速么?

通过融合前两个计算步骤,降低执行Reduce_max和Reduce_sum等操作的通信开销。利用共享内存来存储临时数据,以减少对全局内存的访问成本。

stephen147的博客 1234

sql语言之子查询语句

子查询是指在一个SQL查询语句中嵌套另一个完整的查询语句,以获取更精确或相关的数据。在编写子查询时,建议参考数据库系统的文档和使用指南,以确保正确和高效地使用子查询。需要注意的是,使用子查询时应考虑查询的性能和效率。上述示例中,子查询嵌套在WHERE子句中,用于在table1中选取满足条件的数据,其中条件是检查table2的某一列。上述示例中,子查询被嵌套在FROM子句中,作为一个临时表(或视图)使用,供外层查询使用。上述示例中,子查询嵌套在HAVING子句中,用于与外层查询的聚合函数结果进行比较。

qq_45635347的博客 3720

南京银行信息技术岗提前批笔试与面试

1、笔试 笔试大致可以分为三部分:性格测试、行测题目、专业知识 性格测试 性格测试一般会有较多的体量,可能一共大概有一百多道接近两百道的样子,这个是不限时的。 前面有100道是这样的题目,就是有四个选项都是各种形容词,然后分别选出最符合自己的与最不符合自己的选项。这种题你就顺着自己的潜意识填就行了,但是前后要一致,我怀疑他出这么多题,可能就是考一考你记不记得前面填了啥。比如你做到第90题的时候,可能会出现和前面第2题类似的四个形容词,更有甚者就是一模一样的,你要对自己之前选的什么有个比较清楚的记忆。

qq_40971025的博客 6921

西门子S7-1500 PLC模块化编程与生产线自动化实践

PLC(可编程逻辑控制器)作为工业自动化核心设备,其模块化编程技术能显著提升产线控制系统的开发效率。通过SCL高级语言实现算法封装、功能块(FB)复用等工程实践,可构建稳定可靠的分层式控制架构。本文以西门子TIA Portal平台为例,详解S7-1500系列PLC在汽车零部件产线中的标准化应用方案,包含配方管理、设备联动等典型场景的SCL实现,以及Profinet通信、虚拟轴同步等进阶技巧。特别适用于需要快速实施中大型生产线自动化改造的工程师,提供经过验证的异常处理机制和模块化设计规范。

weixin_34341229的博客 457

SQL语言中的子查询

(1)子查询 子查询是嵌套在另一个语句,如:select,insert,update、delete中的查询 子查询的例子: (2)嵌套子查询 子查询可以嵌套在另外一个子查询中,SQL Server最多支持32个嵌套级别 嵌套子查询的例子: 查找价格高于'上海永久'和'凤凰'品牌的所有产品的平均定价的产品。 第一步: 子查询以获取品牌名称为 '上海永久' 和 '凤凰' 的品牌标识号列表: 第二步: 计算属于这些品牌的所有产品的平均价...

weixin_54835055的博客 2万+

强化学习-----DQN(Deep Q-network)

DQN(Deep Q-Network)是一种基于深度学习和强化学习的算法,由DeepMind提出,用于解决离散动作空间下的马尔科夫决策过程(MDP)问题。它是首个成功将深度学习应用于解决强化学习任务的算法之一。DQN,即深度Q网络(Deep Q-network),是指基于深度学习的Q-Learing算法。那什么是Q-leaning?可以看上一篇文章Q-learning是一种经典的强化学习算法,用于解决马尔可夫决策过程(Markov Decision Process,MDP)中的控制问题。

qq_74722169的博客 2万+

SQL语句之子查询

SQL语句中子查询

LMY0210的博客 1万+

Open3D 计算FPFH特征【2025最新版】

FPFH特征描述子的python实现,本文最新更新时间为:2025年3月18日。

点云侠的博客 5273

广东省低应变题库

11.按《建筑地基基础检测规范》DBJ/T15-60-2019的规定,采用低应变法对混凝土预制桩进行检测时,地基基础设计等级为甲级的桩基工程抽检桩数不应少于总桩数的30%,其余桩基工程抽检桩数不应少于总桩数的20%,且不得少于10根;16.按《建筑地基基础检测规范》DBJ/T15-60-2019的规定,当对某桩的桩身完整性判定为III类时,可认为该桩不满足验收条件,不用进一步确定该桩桩身缺陷对桩身结构承载力的影响程度。2.地基基础检测所用计量器具均应在检定(校准、验证)的有效期内,性能符合相关技术要求。

ZShy001238的博客 318

【SQL查询系列】子查询经典案例

前言 近期在补SQL的基础,特别整理了一下SQL的一些查询练习语句,边学边笔记,持续更新~ 数据库 查询案例 1. 查询工资最低的员工信息: last_name, salary #①查询最低的工资 SELECT MIN(salary) FROM employees #②查询last_name,salary,要求salary=① SELECT last_name,salary FROM employees WHERE salary=( SELECT MIN(salary) FROM employees

学无止境,勤则可达;志存高远,恒亦能成! 4550

基于Python的上市公司年报PDF文本抓取与财务风险分析系统

随着大数据时代的到来,金融数据分析已成为投资决策和风险管理的重要工具。上市公司年报包含了丰富的财务信息和经营数据,通过对这些数据的提取和分析,可以评估公司的财务状况和潜在风险。本文将详细介绍如何使用Python构建一个完整的上市公司年报文本抓取与财务风险分析系统,涵盖PDF文本提取、数据清洗、财务指标计算和风险分析等全流程。

2201_76125261的博客 311

MySQL——子查询用法

文章目录MySQL——子查询用法1、子查询概述2、子查询的使用2.1、单行子查询2.2、多行子查询2.3、相关子查询子查询练习题 MySQL——子查询用法 1、子查询概述 子查询简介 子查询指一个查询语句嵌套在另一个查询语句内部的查询,内部的查询是外部查询的条件,这个特性从MySQL4.1开始引入。 SQL中子查询的使用大大增强了SELECT查询的能力,因为很多时候查询需要从结果集中获取数据,或者需要从同一个表中先计算得出一个数据结果,然后与这个数据结果(可能是某个标量,也可能是某个集合)进行比较。

万里顾一程的博客 2万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

MySQL基础-子查询

子查询概念:子查询指一个查询语句嵌套在另一个查询语句内部的查询,这个特性从MySQL 4.1开始引入SQL 中子查询的使用大大增强了 SELECT 查询的能力,因为很多时候查询需要从结果集中获取数据,或者需要从同一个表中先计算得出一个数据结果,然后与这个数据结果(可能是某个标量,也可能是某个集合)进行比较子查询的基本语法结构:说明:子查询(内查询)在主查询之前一次执行完成子查询的结果被主查询(外查询)使用子查询要包含在括号内建议将子查询放在比较条件的右侧,便于阅读。

~ 1万+

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

MySQL:子查询(全面详解)

本博主将用优快云记录软件开发求学之路上亲身所得与所学的心得与知识,有兴趣的小伙伴可以关注博主!也许一个人独行,可以走的很快,但是一群人结伴而行,才能走的更远!子查询指一个查询语句嵌套在另一个查询语句内部的查询,这个特性从MySQL 4.1开始引入。SQL 中子查询的使用大大增强了 SELECT 查询的能力,因为很多时候查询需要从结果集中获取数据,或者需要从同一个表中先计算得出一个数据结果,然后与这个数据结果(可能是某个标量,也可能是某个集合)进行比较。

weixin_52533007的博客 1万+

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

MYSQL 子查询

十六、子查询 如果在一个查询语句中出现了另一个查询,称为子查询。因此子查询按照查询出现的位置分为外部查询和子查询。 1、查询的结果集分为几种情况 (1)返回标量值 select sum(quanlity) from t_orderitem (2)返回值列表 select cust_id from t_customers (3)返回虚拟表 select * from t_cu

norang的博客 5875

【⑦MySQL】· 一文了解四大子查询

【MySQL子查询】:从标量到表子,让你的查询更高效

热爱编程的小K的博客 9063

【MySQL】子查询

子查询是嵌套在另一个查询内部的SELECT语句,它可以提供主查询所需的数据或条件。子查询使SQL语句更加灵活和强大,能够处理复杂的数据检索和分析需求。

Guiat的博客 900

MySQL 嵌套子查询 with子句 from子查询 in子查询 join子查询

with子句、from子查询、join子查询、in子查询,在复杂查询问题中经常会用到这几种方法,以3个由简到难的案例说明这些方法的用法。

我的博客 1万+

mysql怎么子查询_在mysql中如何进行子查询?

在mysql中,子查询是指将一个查询语句嵌套在另一个查询语句中,可以在SELECT、UPDATE和 DELETE语句中配合WHERE子句进行实现,WHERE子句中语法格式为“WHERE (另一个查询语句)”。(推荐教程:mysql视频教程)子查询是 MySQL 中比较常用的查询方法,通过子查询可以实现多表查询。子查询指将一个查询语句嵌套在另一个查询语句中。子查询可以在 SELECT、UPDAT...

weixin_33902056的博客 4932

MySQL 子查询

具体实现方式是:在 SQL 执行过程中,第一次需要子查询结果时执行子查询并将子查询的结果保存为临时表(一般情况下优化器就会帮我们做这件事) ,后续对子查询结果集的访问将直接通过临时表获得。假设我们有一个学生表 student 和班级表 class,学生表记录了学生的学号 stu_no,而班级表记录了班级信息以及每个班级的班长的学号 monitor_no。此时,整个查询的执行逻辑不再是像我们想象的一样:先执行子查询获取到一个小的结果集,然后以这个小结果集在 g1 中作为过滤条件去过滤。

干就完了!!! 951

MySQL——子查询

我们按内查询是否被执行多次,将子查询划分为 `相关(或关联)子查询` 和 `不相关(或非关联)子查询`。 子查询从数据表中查询了数据结果,如果这个数据结果`只执行一次`,然后这个数据结果作为主查询的条件进行执行,那么这样的子查询叫做`不相关子查询`。 同样,如果子查询需要执行多次,即采用循环的方式,先从`外部查询`开始,每次都`传入子查询`进行查询,然后再将结果反馈给外部,这种`嵌套的执行`方式就称为`相关子查询`。

程邓楠的博客 1266

[mysql]相关子查询

我们前面把单行子查询和多行子查询就已经说完了,我们现在要把继续把相关子查询的内容给大家说明白,因为之前用的都是不相关子查询的案例,我们来谈一谈相关子查询,记住单行子查询和多行子查询是可以进行相关子查询,只是我们刚才写的案例都是相关子查询的案例.我们看一下,如果子查询的执行依赖于外部查询,用到了外部的表,每次查询的时候都要执行一次外部查询,那么这样的子查询就被我们叫做关联子查询,下面列出了子查询的步骤,比如我们之前的案例,查询比abel这个人工资高的员工姓名和工资。

qq1021091799qq的博客 1656

mysql 什么是子查询_mysql子查询是什么

MySql的子查询是多表查询的一个重要组成部分,常常和连接查询一起使用,是多表查询的基础。下面本篇文章就来带大家了解一下子查询,希望对你们有所帮助。什么是子查询?子查询,又叫内部查询。当一个查询是另一个查询的条件时,称之为子查询。子查询可以使用几个简单命令构造功能强大的复合命令。子查询最常用于SELECT-SQL命令的WHERE子句中。子查询是一个 SELECT 语句,它嵌套在一个 SELECT、...

weixin_39616339的博客 242
上一篇: Springboot项目使用mockMvc进行单元测试
下一篇: MySQL之delete与truncate的区别
dannie吖
博客等级 码龄11年 10粉丝 139原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值