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

在 where子句中使用子查询(一)

目录

子查询返回单行单列

查询公司工资最低的员工信息

查找公司雇佣最早的员工信息

子查询返回单行多列

查询与 ALLEN 工资相同,职位相同的所有员工信息

子查询返回多行单列

IN 操作

查询职位是“MANAGER”的所有员工的薪水 


Oracle从入门到总裁:https://blog.csdn.net/weixin_67859959/article/details/135209645

where子句主要是进行数据的筛选。通过分析可以发现,单行单列、多行单列、单行多列都可以在 where子句中出现

子查询返回单行单列

查询公司工资最低的员工信息

SQL> set linesize 250
SQL> select *2  from emp;EMPNO ENAME                JOB                       MGR HIREDATE              SAL       COMM     DEPTNO
---------- -------------------- ------------------ ---------- -------------- ---------- ---------- ----------7369 SMITH                CLERK                    7902 17-12月-80            800                    207499 ALLEN                SALESMAN                 7698 20-2月 -81           1600        300         307521 WARD                 SALESMAN                 7698 22-2月 -81           1250        500         307566 JONES                MANAGER                  7839 02-4月 -81           2975                    207654 MARTIN               SALESMAN                 7698 28-9月 -81           1250       1400         307698 BLAKE                MANAGER                  7839 01-5月 -81           2850                    307782 CLARK                MANAGER                  7839 09-6月 -81           2450                    107839 KING                 PRESIDENT                     17-11月-81           5000                    107844 TURNER               SALESMAN                 7698 08-9月 -81           1500          0         307900 JAMES                CLERK                    7698 03-12月-81            950                    307902 FORD                 ANALYST                  7566 03-12月-81           3000                    207934 MILLER               CLERK                    7782 23-1月 -82           1300                    108989 HELLO

可以看出,最低工资是 800,但是不可能直接使用 80 这个数据

因为这个数据需要统计出来,而要想知道这个内容,可以利用 min() 函数

SQL> select min(sal)2  from emp;MIN(SAL)
----------800

第二步:以上的查询会返回单行单列的数据,本质就是一个数值

如果现在给了数值,就可以直接 利用 where子句筛选所需要的数据行

SQL> select * from emp2  where sal=(select min(sal) from emp);EMPNO ENAME                JOB                       MGR HIREDATE              SAL       COMM     DEPTNO
---------- -------------------- ------------------ ---------- -------------- ---------- ---------- ----------7369 SMITH                CLERK                    7902 17-12月-80            800                    20

查找公司雇佣最早的员工信息

雇佣最早的员工一定是雇佣日期最小的,那么使用 min() 函数完成

SQL> select min(hiredate)2  from emp;MIN(HIREDATE)
--------------
17-12月-80

以上的查询会返回单行单列的数据,所以可以直接在 where子句中使用

SQL> select *2  from emp3  where hiredate=(select min(hiredate) from emp);EMPNO ENAME                JOB                       MGR HIREDATE              SAL       COMM     DEPTNO
---------- -------------------- ------------------ ---------- -------------- ---------- ---------- ----------7369 SMITH                CLERK                    7902 17-12月-80            800                    20

子查询返回单行多列

查询与 ALLEN 工资相同,职位相同的所有员工信息

现在需要同时比较工资与职位,首先应该查询到 ALLEM的工资与职位 

SQL> select sal,job2  from emp3  where ename='ALLEN';SAL JOB
---------- ------------------1600 SALESMAN

此时返回了单行两列的数据信息,而要进行比较的时候需要同时满足

SQL> select * from emp2  where (sal,job)=(select sal,job from emp where ename='ALLEN');EMPNO ENAME                JOB                       MGR HIREDATE              SAL       COMM     DEPTNO
---------- -------------------- ------------------ ---------- -------------- ---------- ---------- ----------7499 ALLEN                SALESMAN                 7698 20-2月 -81           1600        300         30

子查询返回多行单列

如果说子查询返回了多行单列的数据,实质上就相当于告诉用户一个数据的操作范围

而如果要想 进行范围的判断

在 WHERE 子句里面主要提供 3 个运算符: IN、ANY、ALL

IN 操作

IN 操作指的是内容在指定的范围内

查询职位是“MANAGER”的所有员工的薪水 

SQL> select sal2  from emp3  where job='MANAGER';SAL
----------297528502450

 返回的值是多行单列的记录,可以发现职位是“MANAGER”的,

员工的薪水有 3 种: 2975,2850和 2450。

再来看下面这个查询语句

SQL> select * from emp2  where sal in(select sal from emp where job='MANAGER');EMPNO ENAME                JOB                       MGR HIREDATE              SAL       COMM     DEPTNO
---------- -------------------- ------------------ ---------- -------------- ---------- ---------- ----------7566 JONES                MANAGER                  7839 02-4月 -81           2975                    207698 BLAKE                MANAGER                  7839 01-5月 -81           2850                    307782 CLARK                MANAGER                  7839 09-6月 -81           2450                    10

对 IN 操作还可以使用 NOT IN 进行,指的是内容不在指定的范围内

SQL> select * from emp2  where sal not in(select sal from emp where job='MANAGER');EMPNO ENAME                JOB                       MGR HIREDATE              SAL       COMM     DEPTNO
---------- -------------------- ------------------ ---------- -------------- ---------- ---------- ----------7499 ALLEN                SALESMAN                 7698 20-2月 -81           1600        300         307844 TURNER               SALESMAN                 7698 08-9月 -81           1500          0         307839 KING                 PRESIDENT                     17-11月-81           5000                    107900 JAMES                CLERK                    7698 03-12月-81            950                    307934 MILLER               CLERK                    7782 23-1月 -82           1300                    107902 FORD                 ANALYST                  7566 03-12月-81           3000                    207369 SMITH                CLERK                    7902 17-12月-80            800                    207521 WARD                 SALESMAN                 7698 22-2月 -81           1250        500         307654 MARTIN               SALESMAN                 7698 28-9月 -81           1250       1400         30

在讲解 NOT IN 操作的时候曾经说过一个问题,不能够为 null,这一概念在此处照样适用

SQL> select * from emp2  where comm not in(select comm from emp);未选定行

主要原因就是因为在子查询“ (SELECT comm FROM emp) ”中出现了 null

相关文章:

在 where子句中使用子查询(一)

目录 子查询返回单行单列 查询公司工资最低的员工信息 查找公司雇佣最早的员工信息 子查询返回单行多列 查询与 ALLEN 工资相同,职位相同的所有员工信息 子查询返回多行单列 IN 操作 查询职位是“MANAGER”的所有员工的薪水 Oracle从入门到总裁:https://bl…...

kafka为什么性能这么高?

Kafka系统架构 Kafka是一个分布式流处理平台,具有高性能和可伸缩性的特点。它使用了一些关键的设计原则和技术,以实现其高性能。 上图是Kafka的架构图,Producer生产消息,以Partition的维度,按照一定的路由策略&#x…...

安卓OpenGL添加水印并录制(二)---抖音录制原理

文章目录 前文回顾音频处理留个小思考总结 本文首发地址 https://h89.cn/archives/146.html 最新更新地址 https://gitee.com/chenjim/chenjimblog 源码地址: Gitee: OpenGLRecorder 通过 前文 我们知道了如何采集 Camera 视频,叠加水印、贴纸保存为MP4,…...

动态绑定样式,uniapp,用三元运算动态绑定多个class类样式,动态绑定的样式可以和原始样式共存

介绍 | uni-app官网 vue、uniapp中动态添加绑定style、class 9种方法实现_vue style动态绑定-CSDN博客 uniapp使用三元运算符动态绑定元素的style样式_uniapp style动态绑定-CSDN博客 对象写法,可以写多个class类 class类的名字:判断条件,最后结果只有…...

神经网络基础——激活函数的选择、参数初始化

一、神经网络 1、神经网络 人工神经网络(Artificial Neural Network,即ANN)也简称为神经网络(NN)是一种模仿生物神经网络结构 和功能的计算模型。 2、基本部分 输入层:输入 x 输出层:输出 y 隐…...

ElasticSearch之聚合aggs

写在前面 本文看下es的聚合相关内容。 1:什么是聚合 即,数据的统计分析。如sum,count,avg,min,max,分组等。 2:支持哪些聚合类型 2.1:bucket aggregation 对满足特…...

Android 系统定位和高德定位

文章目录 Android 系统定位和高德定位系统定位工具类封装LocationManager使用 高德定位封装高德地图使用 Android 系统定位和高德定位 系统定位 工具类 public class LocationUtils {public static final int REQUEST_LOCATION 0xa1;/*** 判断定位服务是否开启*/public sta…...

Day20_网络编程(软件结构,网络编程三要素,UDP网络编程,TCP网络编程)

文章目录 Day20 网络编程学习目标1 软件结构2 网络编程三要素2.1 IP地址和域名1、IP地址2、域名3、InetAddress类 2.2 端口号2.3 网络通信协议1、OSI参考模型和TCP/IP参考模型2、UDP协议3、TCP协议 2.4 Socket编程 3 UDP网络编程3.1 DatagramSocket和DatagramPacket1、Datagram…...

https://registry.npm.taobao.org淘宝npm镜像仓库地址更新

在工作中有遇见获取淘宝的npm镜像存在问题,图示如下的报错: 根据报错的内容是说 https://registry.npm.taobao.org地址访问失败了,然后通过排查发现淘宝的npm镜像仓库地址有更新了。需要使用最新的地址 旧的淘宝镜像仓库:https://…...

离散数学(一) 集合

属于关系 表示 枚举法; 叙述法; 文氏图法 基数 空集 全集 全集是相对唯一的 相等关系 有相同元素看作一个元素 包含关系 幂集 集合运算 并集 交集 补集 差集 对称差集 定理 可数集合与不可数集合 自然数集 等势 如果存在集合A到集合B的双射(又称一一…...

IOS不使用默认的mainStroryboard作为首个controller的方法

步骤1: 删除info.plist文件下的一条配置,如图 步骤2: 编辑AppDelegate.m,参考以下代码 interface AppDelegate () //property (strong, nonatomic) UIWindow * window; property(nonatomic,strong) UIWindow * win; property(…...

Qt(C++)面试题 | 精选25项常问

面试是每个求职者都必须经历的一关,而QT面试更是需要面试者有深厚的编程基础和丰富的实战经验。下面我们为大家整理了25道QT面试题,希望能够帮助大家在求职路上获得成功。 ​Qt 中常用的五大模块是哪些? Qt 中常用的五大模块包括: QtCore:提供了 Qt 的核心功能,例如基本的…...

个人博客系列-环境配置-gitee(2)

注册gitee账户 地址:https://gitee.com/ 此步骤省略 新建仓库 执行以下命令 即可 拉取代码 创建目录 mkdir myCode && cd myCode 登录gitee找到项目,点击克隆,拉取代码 连接远程仓库命令 git remote add origin 仓库地址http…...

DevOps 周期的 6 个 C

中型到大型软件开发项目涉及许多人员、多个团队、资源、工具和开发阶段。它们都需要以某种方式进行管理和简化,不仅可以获得所需的产品,而且还要确保将来在不断变化的环境下易于管理和维护。组织通常遵循许多项目管理模型和技术。DevOps 是其中之一&…...

九、计算机视觉-形态学基础概念

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、形态学的基本概念1.1 定义1.2 结构元素1.3 形态学操作 二、形态学的应用总结 前言 现在开始后面几课将介绍计算机视觉中的形态学理论和技术,包…...

杰发科技AC7801——SRAM 错误检测纠正

0.概述 7801暂时无错误注入,无法直接进中断看错误情况,具体效果后续看7840的带错误注入的测试情况。 1.简介 2.特性 3.功能 4.调试 可以看到在库文件里面有ecc_sram的库。 在官方GPIO代码里面写了点测试代码 成功打开2bit中断 因为没有错误注入&#x…...

普中51单片机学习(AD转换)

AD转换 分辨率 ADC的分辨率是指使输出数字量变化一个相邻数码所需输入模拟电压的变化量。常用二进制的位数表示。例如12位ADC的分辨率就是12位,或者说分辨率为满刻度的1/(2^12)。 一个10V满刻度的12位ADC能分辨输入电压变化最小值是10V1/(2^12 )2.4mV。 量化误差 …...

YoloV8改进策略:主干网络改进|MogaNet——高效的多阶门控聚合网络

文章目录 摘要1、简介2、相关工作2.1、视觉Transformers2.2、ViT时代的卷积网络3、从多阶博弈论交互的角度看表示瓶颈4、方法论4.1、MogaNet概述4.2、多阶门控聚合4.3、通过通道聚合进行多阶特征重新分配4.4、实现细节5、实验5.1、ImageNet分类5.2、密集预测任务5.3、消融实验和…...

Sora:OpenAI引领创新浪潮的AI视频模型

Sora:OpenAI引领创新浪潮的AI视频模型 OpenAI作为人工智能领域的佼佼者,接下来,让我们一起深入了解Sora的技术特点、应用场景以及它对未来创作方式的潜在影响。 首先,让我们来探讨Sora的技术特点。Sora是一种基于深度学习的视频生…...

torch报错:[winerror 126] 找不到指定的模块torch_python.dll“ or one of its dependencies.

[winerror 126] 找不到指定的模块。 error loading "d:\miniconda\envs\action_env\lib\site-packages\torch\lib\torch_python.dll" or one of its dependencies. 在使用这个yolov5模块的时候发现了这个错误,错误原因是因为python版本和torch版本冲突。…...

【杂谈】-递归进化:人工智能的自我改进与监管挑战

递归进化:人工智能的自我改进与监管挑战 文章目录 递归进化:人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管?3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...

三维GIS开发cesium智慧地铁教程(5)Cesium相机控制

一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点&#xff1a; 路径验证&#xff1a;确保相对路径.…...

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地

借阿里云中企出海大会的东风&#xff0c;以**「云启出海&#xff0c;智联未来&#xff5c;打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办&#xff0c;现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...

系统设计 --- MongoDB亿级数据查询优化策略

系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log&#xff0c;共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题&#xff0c;不能使用ELK只能使用…...

如何为服务器生成TLS证书

TLS&#xff08;Transport Layer Security&#xff09;证书是确保网络通信安全的重要手段&#xff0c;它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书&#xff0c;可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...

2025盘古石杯决赛【手机取证】

前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来&#xff0c;实在找不到&#xff0c;希望有大佬教一下我。 还有就会议时间&#xff0c;我感觉不是图片时间&#xff0c;因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南

&#x1f680; C extern 关键字深度解析&#xff1a;跨文件编程的终极指南 &#x1f4c5; 更新时间&#xff1a;2025年6月5日 &#x1f3f7;️ 标签&#xff1a;C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言&#x1f525;一、extern 是什么&#xff1f;&…...

OpenLayers 分屏对比(地图联动)

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能&#xff0c;和卷帘图层不一样的是&#xff0c;分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...

C# 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

基于Java+MySQL实现(GUI)客户管理系统

客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息&#xff0c;对客户进行统一管理&#xff0c;可以把所有客户信息录入系统&#xff0c;进行维护和统计功能。可通过文件的方式保存相关录入数据&#xff0c;对…...