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

高级查询 — 子查询

关于嵌套查询(子查询)

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
    );
    

沉住气别惧怕黑暗,因为光亮就在不远。 ——痛仰《当太阳照常升起》

相关文章:

高级查询 — 子查询

关于嵌套查询&#xff08;子查询&#xff09; 1.概述 子查询是在一个查询中嵌套另一个查询的查询语句。内部查询从外部查询或数据库中提取数据&#xff0c;然后使用这些数据来执行内部查询。出现在其他语句中的 select 语句&#xff0c;称为嵌套查询或子查询。外部的查询语句…...

霍夫变换(Hough Transform)

文章目录 1. 什么是霍夫变换2. 霍夫直线检测2.1 霍夫直线检测的具体步骤2.2 霍夫直线检测的优缺点2.3 OpenCV中霍夫直线检测的应用2.3.1 标准霍夫检测2.3.2 概率霍夫检测 3. 霍夫圆检测4. 源码仓库地址 1. 什么是霍夫变换 霍夫变换(Hough Transform)是图像处理中的一种特征提取…...

【每日挠头算法题(2)】压缩字符串|仅执行一次字符串交换能否使两个字符串相等

文章目录 一、压缩字符串思路 二、仅执行一次字符串交换能否使两个字符串相等思路1&#xff1a;计数法思路2&#xff1a;模拟法 总结 一、压缩字符串 点我直达~ 思路 使用双指针法 大致过程如下&#xff1a; 使用双指针&#xff0c;分别读&#xff08;read&#xff09;&…...

V4L2框架解析

和你一起终身学习&#xff0c;这里是程序员Android 经典好文推荐&#xff0c;通过阅读本文&#xff0c;您将收获以下知识点: 一、概览二、流程简介三、关键结构体四、模块初始化五、处理用户空间请求 一、概览 相机驱动层位于HAL Moudle与硬件层之间&#xff0c;借助linux内核驱…...

Trie树模板与应用

文章和代码已经归档至【Github仓库&#xff1a;https://github.com/timerring/algorithms-notes 】或者公众号【AIShareLab】回复 算法笔记 也可获取。 文章目录 Trie树&#xff08;字典树&#xff09;基本思想例题 Trie字符串统计code关于idx的理解 模板总结应用 最大异或对分…...

【华为OD统一考试B卷 | 200分】跳格子游戏(C++ Java JavaScript Python)

文章目录 题目描述输入描述输出描述用例C++javajavaScriptpython题目描述 地上共有N个格子,你需要跳完地上所有的格子,但是格子间是有强依赖关系的,跳完前一个格子后,后续的格子才会被开启,格子间的依赖关系由多组steps数组给出,steps[0]表示前一个格子,steps[1]表示st…...

该选哪个语言进修呢?

前言&#xff1a; 如今&#xff0c;计算机编程已经成为了许多工作领域中的必备技能。但是&#xff0c;现在的计算机语言有很多&#xff0c;这可能会让我们感到困惑&#xff1a;我应该从哪个语言开始呢&#xff1f;在这篇博客中&#xff0c;我们将详细分析当前流行的一些计算机…...

数据库实验三 数据查询一

任务描述 本关任务&#xff1a;按条件查询数据表的所有字段 为了完成本关任务&#xff0c;你需要掌握&#xff1a; 如何查询数据表的所有字段 相关知识 查询数据表 命令格式&#xff1a; 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 中&#xff0c;列表渲染是非常常见的操作。它允许我们将一个数组中的数据渲染为一个列表&#xff0c;从而实现数据的展示和交互。在本文中&#xff0c;我们将探讨 Vue 中的列表渲染的基本原理和用法&#xff0c;并给出一些实例代码来帮助读者更好地理…...

java 中的关键字

1. 面向对象编程(OOP) - 把程序中的实体看做对象&#xff0c;而不是过程或函数。OOP有3个基本特征&#xff1a;封装&#xff0c;继承和多态。 2. 类(Class) - 一个用于描述对象属性和方法的蓝图。 3. 对象(Object) - 类的实例化&#xff0c;也就是一个具体的实体。 4. 方法(Met…...

python序列化和结构化数据详解

序列化和结构化数据是计算机程序中非常重要的概念&#xff0c;它们的原理和应用在许多应用程序中都是必不可少的。Python作为一种高级编程语言&#xff0c;在序列化和结构化数据方面提供了很多优秀的解决方案。在本文中&#xff0c;我们将详细介绍Python中序列化和结构化数据的…...

PoseiSwap的趋势性如何体现?

DEX 代表了一种先进的意识形态&#xff0c;相对于 CEX 其更强调无许可、去中心化以及公开透明。然而随着 DeFi 赛道逐渐从 2021 年年底的高峰逐渐转向低谷&#xff0c;DEX 整体的交易量、TVL等数据指标也开始呈现下滑的趋势&#xff0c;DEX 正在面临发展的新瓶颈期。 在这样的背…...

西南交通大学智能监测 培训课程练习4

2023.056.07和09培训 项目实战 目录 一、infracore&#xff08;基础核心层&#xff09; 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.…...

设备树的引入及简明教程

首先说明&#xff0c;设备树不可能用来写驱动。 设备树只是用来给内核里的驱动程序&#xff0c;指定硬件的信息。比如LED驱动&#xff0c;在内核的驱动程序里去操作寄存器&#xff0c;但是操作哪一个引脚&#xff1f;这由设备树指定。 需要编写设备树文件(dts: device tree s…...

MM32F3273G8P火龙果开发板MindSDK开发教程12 -获取msa311加速器的敲击事件

MM32F3273G8P火龙果开发板MindSDK开发教程12 -获取msa311加速器的敲击事件 1、功能描述 msa311可以识别单击、双击事件&#xff0c;类似手机上的点击返回&#xff0c;双击截屏功能。 单击&#xff0c;双击都能产生中断事件。 中断事件产生后&#xff0c;从对应的状态寄存器读…...

Maven聚合

在实际的开发过程中&#xff0c;我们所接触的项目一般都由多个模块组成。在构建项目时&#xff0c;如果每次都按模块一个一个地进行构建会十分得麻烦&#xff0c;Maven 的聚合功能很好的解决了这个问题。 聚合 使用 Maven 聚合功能对项目进行构建时&#xff0c;需要在该项目中…...

[架构之路-211]- 需求- 软架构前的需求理解:ADMEMS标准化、有序化、结构化、层次化需求矩阵 =》需求框架

目录 前言&#xff1a; 一、什么是ADMES: 首先&#xff0c;需求是分层次的&#xff1a; 其次&#xff0c;需求是有结构的&#xff0c;有维度的 再次&#xff0c;不同层次需求、不同维度需求之间可以相互转化&#xff08;难点、经验积累&#xff09; 最终&#xff0c;标准…...

基于前推回代法的连续潮流计算研究【IEEE33节点】(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

【双向链表】

双向链表 带头双向循环链表的实现1. 函数的声明2. 函数的实现3. 主函数测试 带头双向循环链表的实现 今天我们来实现一下带头双向循环链表&#xff0c;顾名思义&#xff0c;带头就是有哨兵位&#xff0c;哨兵位不是链表的头&#xff0c;它是连接头节点的一个节点&#xff0c;方…...

POSTGRESQL NEON - Serverless 式的POSTGRESQL 数据库的独特技能 分支数据

开头还是介绍一下群&#xff0c;如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题&#xff0c;有需求都可以加群群内有各大数据库行业大咖&#xff0c;CTO&#xff0c;可以解决你的问题。加群请联系 liuaustin3 &#xff0c;在新加的朋友会分到2群&#xff08;共…...

数据分布——长尾分布的处理

前言 长尾分布在分类任务中会提到这个名,这是因为长尾分布这个现象问题会导致在训练过程中会出现出错率高的问题&#xff0c;影响了实验结果。 这里要说的是&#xff0c;长尾分布是一种现象&#xff0c;有的地方说是一种理论或定律&#xff0c;我感觉这样说不太确切&#xff0…...

集合导题、刷题、考试全套完整流程,专业强大的功能,提高刷题学习效率和企业的培训效率

土著刷题微信小程序v1.15&#xff0c;主要是迭代了考试模块的进阶功能&#xff0c;对考试模块进行了一次升级改造。 由于在v1.15开发期间&#xff0c;收到了违规内容整改的通告&#xff0c;为了遵守相关法律法规&#xff0c;让小程序能够平稳安全地运营下去&#xff0c;我们特此…...

【机器学习】采样方法

文章目录 采样方法11.1 简介11.2 常见采样方法11.2.1 均匀分布采样11.2.2 逆变换采样11.2.3 拒绝采样11.2.4 重要采样11.2.5 Metropolis方法11.2.6 Metropolis-Hasting 算法11.2.7 吉布斯采样 采样方法 11.1 简介 什么是采样 从一个分布中生成一批服从该分布的样本&#xff0c…...

Seata TCC 模式理论学习、生产级使用示例搭建及注意事项 | Spring Cloud55

一、前言 通过以下系列章节&#xff1a; docker-compose 实现Seata Server高可用部署 | Spring Cloud 51 Seata AT 模式理论学习、事务隔离及部分源码解析 | Spring Cloud 52 Spring Boot集成Seata利用AT模式分布式事务示例 | Spring Cloud 53 Seata XA 模式理论学习、使用…...

一文详解:Vue3中使用Vue Router

目录 安装和配置Vue Router安装Vue Router配置Vue Router Vue Router的基本概念Vue Router 的配置项介绍routes中的配置项介绍 路由跳转使用 router-link组件使用router.push函数 路由传参动态路由嵌套路由命名路由路由守卫全局路由守卫路由独享守卫 路由懒加载使用import()方式…...

C++开发—远程控制

C开发—远程控制 一&#xff0c;准备二&#xff0c;安装版本控制工具1&#xff0c;安装gitforwindows2&#xff0c;安装乌龟git1&#xff0c;安装乌龟git应用2&#xff0c;安装乌龟git对应的语言包 3&#xff0c;设置Visual Studio的git插件4&#xff0c;创建git项目 三&#x…...

【Python基础】Python数据容器(集合)

文章目录 数据容器&#xff1a;set&#xff08;集合&#xff09;集合的定义集合的常用操作-修改(1)添加新元素(2)移除元素(3)从集合中随机取出元素(4)清空集合(5)取出 两个集合的差集(6)消除 两个集合的差集(7)两个集合 合并(8)统计集合元素数量len()(9)集合的遍历 集合的特点 …...

高通 Camera HAL3:集成camxoverridesettings.txt到整机版本

camxoverridesettings.txt 是高通提供给开发者临时进行CAMX、CHI-CDK功能调试的一种方式&#xff0c;通过配置各种变量值然后写入到该文件&#xff0c;能控制Log打印、参数配置、数据dump等多种功能 这个文件需要集成在设备目录的vendor/etc/camera/里 因为camxoverridesetti…...

PHP面试题大全

一 、PHP基础部分 1、PHP语言的一大优势是跨平台&#xff0c;什么是跨平台&#xff1f; PHP的运行环境最优搭配为ApacheMySQLPHP&#xff0c;此运行环境可以在不同操作系统&#xff08;例如windows、Linux等&#xff09;上配置&#xff0c;不受操作系统的限制&#xff0c;所以…...

网站打开不了怎样做/上海网络推广联盟

本来想着用尺取的思想&#xff0c;不过会超时。利用等差数列S nan*n(n-1)/2,得a (2*S-n*(n-1))/(2*n),然后遍历n&#xff0c;只要满足a是整数就可以&#xff0c;这样复杂度从O&#xff08;S&#xff09;变成了O&#xff08;sqrt&#xff08;S&#xff09;&#xff09;。 #inc…...

做伤残鉴约号网站/站内推广和站外推广的区别

31231313...

物流网站建设可行性分析/网站排名点击工具

SVBVERSION & SVNSVN是subversion的缩写&#xff0c;是一个开放源代码的版本控制系统&#xff0c;通过采用分支管理系统的高效管理&#xff0c;简而言之就是用于多个人共同开发同一个项目&#xff0c;实现共享资源&#xff0c;实现最终集中式的管理。本案例要求先快速搭建好…...

上海网站建设 公司案例/企业网站优化推广

Background 2021 关键词 : 认知 + 积累 2021 年已经过去了, 回顾过去的一年的主线任务, 上半年一直在找工作, 中期都在公司实习, 下半年也在找其他公司和准备paper。 整体来看我的2021年主线好像并没有做什么, 而且research 也停止了push。 然而事实不是这样的。 这一年…...

路桥建设局网站/seo网站推广怎么做

TypeScript 和 JavaScript 都是开发人员广泛使用的编程语言。尽管它们有一些相似之处,但您也应该注意一些关键差异。在本文中,我们将仔细研究 TypeScript 和 JavaScript,以便您更好地了解何时使用每种语言。 什么是TypeScript? TypeScript 是 Microsoft 创建的一种语言。…...

现在建网站还能赚钱吗/万能导航网

2019独角兽企业重金招聘Python工程师标准>>> 高性价比深度学习神器&#xff01;阿里云GPU实例V100 最深度评测 在 GTC 2017 大会上&#xff0c;NVIDIA 的 CEO 黄仁勋正式发布了其新一代旗舰计算卡 Tesla V100&#xff0c;但是一项技术从发布到真正使用到生产环境中&…...