高级查询 — 子查询
关于嵌套查询(子查询)
1.概述
- 子查询是在一个查询中嵌套另一个查询的查询语句。
- 内部查询从外部查询或数据库中提取数据,然后使用这些数据来执行内部查询。
- 出现在其他语句中的 select 语句,称为嵌套查询或子查询。
- 外部的查询语句,称为主查询或外查询。
2.分类
-
按结果集的行列数分类
- 标量子查询(子查询结果集只有一行一列)
- 列子查询(子查询结果集只有一列多行)
- 行子查询(子查询结果集有一行多列)
- 表子查询(子查询结果集一般为多行多列)
-
按子查询出现的位置分类
- select 后:标量子查询。
- from 后面:表子查询。
- where 或 having 后:标量子查询、行子查询、列子查询、表子查询。
- exists 后
-
按与父查询的关系分类
- 不相关子查询:子查询的条件不依赖于父查询。
- 相关子查询:子查询的条件依赖于父查询。
3.注意
- 子查询一般放在小括号内,并且一般放在条件的右侧。
- 标量子查询,一般搭配着单行操作符使用;列子查询,一般搭配着多行操作符使用。
- 子查询的
select语句中不能使用order by子句,因为其只能对最终结果进行排序。
where 或 having 后的子查询
1.标量子查询
-
子查询结果集只有一行一列
-
在
where子句中过滤数据:使用标量子查询来比较列与单个值之间的关系 -
查询工资比名为Ellen高的员工的名字和工资
-
分步:查询Ellen的工资(子) -> 查询比其工资高的信息(父)
-
select first_name, salary from employees where salary > (select salaryfrom employeeswhere first_name = 'Ellen' );
-
-
查询工资最少的员工的名字、工种和月薪
-
分步:查询最少工资(子)-> 查询工资等于最少工资的员工信息
-
select first_name, job_id, salary from employees where salary = (select min(salary)from employees );
2.列子查询
-
子查询结果集只有一列多行
-
放在
where语句中,用来限制主查询返回的结果集,可以用于比较、过滤和连接数据。 -
返回位置编号是 1400 和 1500 两个部门中的所有员工名字
-
分步:1400 和 1500 两个部门(子) -> 此两部门的员工信息(父)。
-
select first_name, department_id from employees where department_id in(select distinct department_idfrom departmentswhere location_id in(1400, 1500) );
-
-
查询其它工种中比
it_prog工种所有工资都低的员工的员工编号、名字、工种和月薪-
分步:it_prog公种所有员工的工资(子) -> 查询满足要求的员工信息()父。
-
select employee_id, first_name, job_id, salary from employees where salary < all(select distinct salaryfrom employeeswhere job_id = 'it_prog' ) and job_id != 'it_prog';
-
3.行子查询
-
子查询结果集有一行多列。
-
查询员工编号最小并且工资最高的员工信息(编号、姓名、工资)
-
分步:最小员工编号与最高工资(子) -> 员工信息(父)。
-
select employee_id, first_name, salary from employees where(employee_id, salary) = (select min(employee_id), max(salary)from employees );
-
-
查询 employees 的部门编号和管理者编号在 departments 表中的员工名字,部门编号和管理者编号
-
分步:部门编号和管理者编号(子)-> 员工信息(父)
-
select first_name, department_id, manager_id from employees where (department_id, manager_id) in (select department_id, manager_idfrom departments );
-
select 和 from 后的子查询
1. select
-
select后面仅支持标量子查询。 -
查询每个部门信息和该部门员工个数
-
分步:部门员工个数(子)-> 部门信息(父)
-
select d.*, (select count(*)from employees ewhere e.department_id = d.department_id ) as num from departments d;
-
-
查询 90 编号的部门员工人数占公司总人数的比例,带百分号,小数点后保留一位。
-
select concat(truncate((select count(*)from employeeswhere department_id = 90) / (select count(*)from employees)*100,1), '%') as percent from dual;
-
2. from
-
from后面支持表子查询。 -
子查询结果作为临时表,要求必须起别名。
-
查询部门编号、该部门的平均工资 average_salary 和工资等级,平均工资去掉小数部分
-
分步:部门编号、该部门的平均工资(子)-> 部门编号、该部门的平均工资和对应的工资等级(父)。
-
select s.*, g.grade_level from (select department_id, truncate(avg(salary), 0) as average_salaryfrom employeesgroup by department_id ) as s join job_grades as g on s.average_salary between lowest_sal and highest_sal;
-
exit 后的子查询
1.语法
exists(query_statement)- 返回结果为1或0。
2.示例
-
查询工资大于3000的员工编号
select employee_id from northwind.employees where salary > 30000;select exists(select employee_idfrom northwind.employeeswhere salary > 30000 ) as 'exist salary > 30000'; -
查询有员工的部门名
select department_name from departments as d where exists (select *from employees as ewhere d.department_id = e.department_id );
沉住气别惧怕黑暗,因为光亮就在不远。 ——痛仰《当太阳照常升起》
相关文章:
高级查询 — 子查询
关于嵌套查询(子查询) 1.概述 子查询是在一个查询中嵌套另一个查询的查询语句。内部查询从外部查询或数据库中提取数据,然后使用这些数据来执行内部查询。出现在其他语句中的 select 语句,称为嵌套查询或子查询。外部的查询语句…...
霍夫变换(Hough Transform)
文章目录 1. 什么是霍夫变换2. 霍夫直线检测2.1 霍夫直线检测的具体步骤2.2 霍夫直线检测的优缺点2.3 OpenCV中霍夫直线检测的应用2.3.1 标准霍夫检测2.3.2 概率霍夫检测 3. 霍夫圆检测4. 源码仓库地址 1. 什么是霍夫变换 霍夫变换(Hough Transform)是图像处理中的一种特征提取…...
【每日挠头算法题(2)】压缩字符串|仅执行一次字符串交换能否使两个字符串相等
文章目录 一、压缩字符串思路 二、仅执行一次字符串交换能否使两个字符串相等思路1:计数法思路2:模拟法 总结 一、压缩字符串 点我直达~ 思路 使用双指针法 大致过程如下: 使用双指针,分别读(read)&…...
V4L2框架解析
和你一起终身学习,这里是程序员Android 经典好文推荐,通过阅读本文,您将收获以下知识点: 一、概览二、流程简介三、关键结构体四、模块初始化五、处理用户空间请求 一、概览 相机驱动层位于HAL Moudle与硬件层之间,借助linux内核驱…...
Trie树模板与应用
文章和代码已经归档至【Github仓库:https://github.com/timerring/algorithms-notes 】或者公众号【AIShareLab】回复 算法笔记 也可获取。 文章目录 Trie树(字典树)基本思想例题 Trie字符串统计code关于idx的理解 模板总结应用 最大异或对分…...
【华为OD统一考试B卷 | 200分】跳格子游戏(C++ Java JavaScript Python)
文章目录 题目描述输入描述输出描述用例C++javajavaScriptpython题目描述 地上共有N个格子,你需要跳完地上所有的格子,但是格子间是有强依赖关系的,跳完前一个格子后,后续的格子才会被开启,格子间的依赖关系由多组steps数组给出,steps[0]表示前一个格子,steps[1]表示st…...
该选哪个语言进修呢?
前言: 如今,计算机编程已经成为了许多工作领域中的必备技能。但是,现在的计算机语言有很多,这可能会让我们感到困惑:我应该从哪个语言开始呢?在这篇博客中,我们将详细分析当前流行的一些计算机…...
数据库实验三 数据查询一
任务描述 本关任务:按条件查询数据表的所有字段 为了完成本关任务,你需要掌握: 如何查询数据表的所有字段 相关知识 查询数据表 命令格式: select * from 数据表 where 查询条件 任务要求 打开province数据库 第一题 查询街…...
【Python百日进阶-Web开发-Peewee】Day244 - 数据库 Postgresql、CockroachDB
文章目录 六、数据库6.1 初始化数据库6.2 使用 Postgresql6.2.1 隔离级别 6.3 使用 CockroachDB 六、数据库 http://docs.peewee-orm.com/en/latest/peewee/database.html PeeweeDatabase对象表示与数据库的连接。该类Database使用打开数据库连接所需的所有信息进行实例化&…...
Vue 中的列表渲染
Vue 中的列表渲染 在 Vue 中,列表渲染是非常常见的操作。它允许我们将一个数组中的数据渲染为一个列表,从而实现数据的展示和交互。在本文中,我们将探讨 Vue 中的列表渲染的基本原理和用法,并给出一些实例代码来帮助读者更好地理…...
java 中的关键字
1. 面向对象编程(OOP) - 把程序中的实体看做对象,而不是过程或函数。OOP有3个基本特征:封装,继承和多态。 2. 类(Class) - 一个用于描述对象属性和方法的蓝图。 3. 对象(Object) - 类的实例化,也就是一个具体的实体。 4. 方法(Met…...
python序列化和结构化数据详解
序列化和结构化数据是计算机程序中非常重要的概念,它们的原理和应用在许多应用程序中都是必不可少的。Python作为一种高级编程语言,在序列化和结构化数据方面提供了很多优秀的解决方案。在本文中,我们将详细介绍Python中序列化和结构化数据的…...
PoseiSwap的趋势性如何体现?
DEX 代表了一种先进的意识形态,相对于 CEX 其更强调无许可、去中心化以及公开透明。然而随着 DeFi 赛道逐渐从 2021 年年底的高峰逐渐转向低谷,DEX 整体的交易量、TVL等数据指标也开始呈现下滑的趋势,DEX 正在面临发展的新瓶颈期。 在这样的背…...
西南交通大学智能监测 培训课程练习4
2023.056.07和09培训 项目实战 目录 一、infracore(基础核心层) 1.1database 1.2config 1.3util 二、业务领域模块 2.1structure模块 2.1.1domain层 2.1.2application层 2.1.3adapter层 2.2sensor模块 2.2.1domian层 2.2.2application层 2.2.…...
设备树的引入及简明教程
首先说明,设备树不可能用来写驱动。 设备树只是用来给内核里的驱动程序,指定硬件的信息。比如LED驱动,在内核的驱动程序里去操作寄存器,但是操作哪一个引脚?这由设备树指定。 需要编写设备树文件(dts: device tree s…...
MM32F3273G8P火龙果开发板MindSDK开发教程12 -获取msa311加速器的敲击事件
MM32F3273G8P火龙果开发板MindSDK开发教程12 -获取msa311加速器的敲击事件 1、功能描述 msa311可以识别单击、双击事件,类似手机上的点击返回,双击截屏功能。 单击,双击都能产生中断事件。 中断事件产生后,从对应的状态寄存器读…...
Maven聚合
在实际的开发过程中,我们所接触的项目一般都由多个模块组成。在构建项目时,如果每次都按模块一个一个地进行构建会十分得麻烦,Maven 的聚合功能很好的解决了这个问题。 聚合 使用 Maven 聚合功能对项目进行构建时,需要在该项目中…...
[架构之路-211]- 需求- 软架构前的需求理解:ADMEMS标准化、有序化、结构化、层次化需求矩阵 =》需求框架
目录 前言: 一、什么是ADMES: 首先,需求是分层次的: 其次,需求是有结构的,有维度的 再次,不同层次需求、不同维度需求之间可以相互转化(难点、经验积累) 最终,标准…...
基于前推回代法的连续潮流计算研究【IEEE33节点】(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
【双向链表】
双向链表 带头双向循环链表的实现1. 函数的声明2. 函数的实现3. 主函数测试 带头双向循环链表的实现 今天我们来实现一下带头双向循环链表,顾名思义,带头就是有哨兵位,哨兵位不是链表的头,它是连接头节点的一个节点,方…...
边缘AI落地实战:从软件平台到NPU硬件的协同开发路径
1. 边缘AI的现实挑战与破局思路在2025年的阿姆斯特丹,一场汇聚了半导体巨头与初创公司的会议,清晰地勾勒出当前技术领域最炙手可热的战场:边缘人工智能。这不再是实验室里的概念演示,而是工程师们每天都要面对的真实难题——如何让…...
告别Let‘s Encrypt:用开源XCA构建私有CA,签发全站浏览器信任的SSL证书
1. 为什么你需要私有CA? 每次看到浏览器里那个"不安全"的红色警告,我就浑身难受。以前我也和大家一样用Lets Encrypt,直到有次紧急发布时遇到证书续期失败,整个团队熬夜排查到凌晨三点。从那天起,我就开始研…...
嵌入式处理器IP选型指南:从ARM到RISC-V的权衡与实战
1. 从一场早餐会聊起:为什么32位处理器IP依然是嵌入式开发的硬通货最近在整理资料时,翻到一篇十多年前的老新闻,说的是IP供应商CAST要在DesignCon 2012上办一场免费的早餐研讨会,主题是他们新推出的BA22 32位处理器IP核。新闻里笔…...
AI 搜索重新重视来源:内容平台的新机会不是被点击,而是被正确引用
生成式搜索刚出现时,很多内容创作者最担心的问题是:如果答案直接出现在搜索页,用户还会不会点进原文?这个担心并不多余。AI Overviews、AI Mode 和各类答案引擎,确实改变了“搜索结果页到网页”的传统路径。但现在更值…...
Loop:Mac窗口管理的终极免费解决方案,告别杂乱桌面
Loop:Mac窗口管理的终极免费解决方案,告别杂乱桌面 【免费下载链接】Loop Window management made elegant. 项目地址: https://gitcode.com/GitHub_Trending/lo/Loop 你是否曾为Mac上杂乱的窗口而烦恼?当多个应用同时打开时ÿ…...
别再乱点鼠标了!用netsh advfirewall命令搞定Windows防火墙,效率翻倍(附常用场景命令清单)
Windows防火墙命令行实战:netsh advfirewall高阶应用指南 每次看到同事在图形界面里一层层点击"控制面板→系统和安全→Windows Defender防火墙→高级设置"时,我都忍不住想递给他一个命令行窗口。作为IT运维老手,我早已习惯用netsh…...
嵌入式开发中的编程规范实践与行业标准解析
1. 编程规范的本质与价值在嵌入式汽车电子领域干了十五年,我见过太多因为代码不规范导致的惨痛教训。有一次,某车企的ECU控制模块在零下30度环境突然死机,排查三周后发现是未初始化的指针在低温环境下产生了非预期行为——这种问题本可以通过…...
SAP ABAP开发避坑指南:NATIVE SQL里那个冒号和MANDT字段,你写对了吗?
SAP ABAP开发实战:NATIVE SQL高频陷阱与性能优化全解析 在SAP ABAP开发领域,NATIVE SQL就像一把双刃剑——它既能突破Open SQL的限制直接操作底层数据库,又隐藏着无数让开发者"踩坑"的语法细节。根据SAP官方统计,超过60…...
告别转矩脉动:用Matlab/Simulink手把手搭建三电平SVPWM异步电机DTC仿真模型
三电平SVPWM异步电机DTC仿真:从零搭建到性能优化的Matlab实战指南 在电机控制领域,直接转矩控制(DTC)因其结构简单、动态响应快等优势,已成为交流调速系统的重要技术路线。然而传统两电平DTC系统存在的转矩脉动大、电流谐波高等问题ÿ…...
SpringBoot生产级监控与异常日志运维实战,线上项目稳定排查不慌
SpringBoot项目本地开发调试正常,部署到生产环境后频繁出现接口报错、服务卡顿、内存溢出、接口响应缓慢、数据库连接耗尽等线上问题,开发者无法实时查看项目运行状态,报错无精准日志定位,排查问题耗时费力,严重影响业…...
