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

【Mysql数据库基础05】子查询 where、from、exists子查询、分页查询

where、from、exists子查询、分页查询

  • 1 where子查询
    • 1.1 where后面的标量子查询
      • 1.1.1 having后的标量子查询
    • 1.2 where后面的列子查询
    • 1.3 where后面的行子查询(了解即可)
  • 2 from子查询
  • 3 exists子查询(相关子查询)
  • 4 分页查询
  • 5 联合查询
  • 6 练习

1 where子查询

1.1 where后面的标量子查询

1.谁的工资比Abel高?

select *
from employees
where salary > (select salaryfrom employeeswhere last_name = 'Abel'
);

2.返回job_id与141号员工相同,salary比143号员工多的员工姓名,job_id 和工资

select last_name,job_id,salary
from employees
where job_id = (select job_idfrom employeeswhere employee_id = 141
)
and salary > (select salaryfrom employeeswhere employee_id = 143
);

3.返回公司工资最少的员工的last_name,job_id和salary

select last_name,job_id,salary
from employees
where salary = (select min(salary)from employees
);

1.1.1 having后的标量子查询

查询最低工资大于50号部门最低工资的部门id和其最低工资

可以拆分去考虑
1.查询50号部门最低工资

select min(salary)
from employees
where department_id = 50;

2.查询每个部门的最低工资

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

3.合并

select department_id,min(salary)
from employees
group by department_id
having min(salary) > (select min(salary)from employeeswhere department_id = 50
);

1.2 where后面的列子查询

单列多行
IN/NOT IN 任意一个
ANY/SOME 某一个
ALL 所有

IN 等于 = ANY

1.返回location_id是1400或1700的部门中的所有员工姓名

select last_name
from employees 
where department_id in (select distinct department_idfrom departmentswhere location_id in (1400,1700)
);

2.返回其它工种中比job_id为’IT_PROG’工种任一工资低的员工的,工号、姓名、job_id 以及salary

select employee_id,last_name,job_id,salary
from employees
where salary < any (select salaryfrom employeeswhere job_id = 'IT_PROG'
) and job_id <> 'IT_PROG';

1.3 where后面的行子查询(了解即可)

一行多列或者多行多列

查询员工编号最小并且工资最高的员工信息

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

2 from子查询

查询每个部门的平均工资的工资等级

select avg_dep.department_id,avg_dep.avg,g.grade_level
from job_grades g
inner join (select department_id,avg(salary) as avgfrom employeesgroup by department_id
)as avg_dep
on avg_dep.avg between g.lowest_sal and g.highest_sal;

3 exists子查询(相关子查询)

只关心有没有这个值

查询有员工的部门名

select department_name
from departments d
where exists(select *from employees ewhere d.department_id = e.department_id
);

4 分页查询

limit offset,size
offset 要显示条目的索引

1.查询前五条的员工信息

select *
from employees
limit 0,5; #起始索引是0,一共显示5条

2.查询第11条~第25条的员工信息

select *
from employees
limit 10,15;

3.有奖金的员工信息,并且工资较高的前10名显示出来

select *
from employees
where commission_pct is not null
order by salary desc
limit 10;

5 联合查询

查询中国用户中男性的信息以及外国用户中年男性的用户信息

select * from t_ca where csex='男'
union
select * from t_ua where tGender = 'male';

联合查询的特点:
1.要求多条查询语句的查询列数是一致的
2.要求多条查询语句查询的每一列的类型和顺序最好一致
3.union会去重
不想去重的话,可以使用union all关键字

6 练习

1.查询和zlotkey相同部门的员工姓名和工资

select last_name,salary
from employees
where department_id = (select department_idfrom employeeswhere last_name = 'Zlotkey'
);

2查询工资比公司平均工资高的员工的员工号,姓名和工资。

select employee_id,last_name,salary
from employees
where salary > (select avg(salary)from employees
);

3查询各部门中工资比本部门平均工资高的员工的员工号,姓名和工资

select employee_id,last_name,salary
from employees e
inner join (select department_id,avg(salary) as agfrom employeesgroup by department_id
) avg_dep
on avg_dep.department_id = e.department_id
where salary > avg_dep.ag;

4.查询管理者是king的员工姓名和工资

select last_name,salary
from employees
where manager_id in(select employee_idfrom employeeswhere last_name = 'K_ing'
);

5.查询工资最高的员工的姓名,要求first_name和iast_name显示为一列,列名为 姓.名

select concat(first_name,last_name) as '姓.名'
from employees
where salary = (select max(salary)from employees
);

相关文章:

【Mysql数据库基础05】子查询 where、from、exists子查询、分页查询

where、from、exists子查询、分页查询 1 where子查询1.1 where后面的标量子查询1.1.1 having后的标量子查询 1.2 where后面的列子查询1.3 where后面的行子查询&#xff08;了解即可&#xff09; 2 from子查询3 exists子查询&#xff08;相关子查询&#xff09;4 分页查询5 联合…...

在Linux/Debian/Ubuntu上通过 Azure Data Studio 管理 SQL Server 2019

Microsoft 提供 Azure Data Studio&#xff0c;这是一种可在 Linux、macOS 和 Windows 上运行的跨平台数据库工具。 它提供与 SSMS 类似的功能&#xff0c;包括查询、脚本编写和可视化数据。 要在 Ubuntu 上安装 Azure Data Studio&#xff0c;可以按照以下步骤操作&#xff1…...

Java代码基础算法练习-搬砖问题-2024.03.25

任务描述&#xff1a; m块砖&#xff0c;n人搬&#xff0c;男搬4&#xff0c;女搬3&#xff0c;两个小孩抬一砖&#xff0c;要求一次全搬完&#xff0c;问男、 女、小孩各若干&#xff1f; 任务要求&#xff1a; 代码示例&#xff1a; package M0317_0331;import java.util.S…...

Tomcat调优

1、调整线程数 <Connector port"8080" maxHttpHeaderSize"8192"maxThreads"1900" minSpareThreads"250" maxSpareThreads"750"enableLookups"false" redirectPort"8443" acceptCount"100"…...

每日OJ题_栈①_力扣1047. 删除字符串中的所有相邻重复项

目录 力扣1047. 删除字符串中的所有相邻重复项 解析代码 力扣1047. 删除字符串中的所有相邻重复项 1047. 删除字符串中的所有相邻重复项 难度 简单 给出由小写字母组成的字符串 S&#xff0c;重复项删除操作会选择两个相邻且相同的字母&#xff0c;并删除它们。 在 S 上反…...

SQLServer SEQUENCE用法

SEQUENCE&#xff1a;数据库中的序列生成器 在数据库管理中&#xff0c;经常需要生成唯一且递增的数值序列&#xff0c;用于作为主键或其他需要唯一标识的列的值。为了实现这一功能&#xff0c;SQL Server 引入了 SEQUENCE 对象。SEQUENCE 是一个独立的数据库对象&#xff0c;用…...

Java中的代理模式(动态代理和静态代理)

代理模式 我们先了解一下代理模式&#xff1a; 在开发中&#xff0c;当我们要访问目标类时&#xff0c;不是直接访问目标类&#xff0c;而是访问器代理类。通过代理类调用目标类完成操作。简单来说就是&#xff1a;把直接访问变为间接访问。 这样做的最大好处就是&#xff1a…...

强化学习之父Richard Sutton:通往AGI的另一种可能

2019年&#xff0c;强化学习之父、阿尔伯塔大学教授Richard Sutton发表了后来被AI领域奉为经典的The Bitter lesson&#xff0c;这也是OpenAI研究员的必读文章。 在这篇文章中&#xff0c;Richard指出&#xff0c;过去 70 年来&#xff0c;AI 研究的一大教训是过于重视人类既有…...

【智能算法】秃鹰搜索算法(BES)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献 1.背景 2020年&#xff0c; Alsattar等人受到秃鹰猎食自然行为启发&#xff0c;提出了秃鹰搜索算法&#xff08;Bald Eagle Search&#xff0c;BES&#xff09;。 2.算法原理 2.1算法思想 BES主要分为三…...

前端并发控制

本文讲解Promise&#xff0c;callback&#xff0c;RxJS多种方式实现并发限制 1.Promise 目前来说&#xff0c;Promise是最通用的方案&#xff0c;一般我们最先想到Promise.all&#xff0c;当然最好是使用新出的Promise.allsettled。 下面简单介绍下二者的区别&#xff0c;假…...

基于YOLOv8深度学习的橙子病害智能诊断与防治系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标分类

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…...

Java中的多线程详解(超级简单理解)(上篇)

使用工具 IntelliJ IDEA Community Edition 2023.1.4 使用语言 Java8 代码能力快速提升小方法&#xff0c;看完代码自己敲一遍&#xff0c;十分有用 目录 1.多线程概述 1.1 进程与线程 1.2 多线程的运行机制 1.3 多线程的优势 2.多线程编程 2.1 Thread类介绍 2.2 …...

Elastic-Job 分布式任务调度

一、使用场景 &#xff08;1&#xff09;分布式项目中 定时任务。如果只部署一台机器&#xff0c;可用性无法保证&#xff0c;如果定时任务机器宕机&#xff0c;无法故障转移&#xff0c;如果部署多台机器时&#xff0c;同一个任务会执行多次&#xff0c;任务重复执行也会出问…...

YZ系列工具之YZ09: VBA_Excel之读心术

我给VBA下的定义&#xff1a;VBA是个人小型自动化处理的有效工具。利用好了&#xff0c;可以大大提高自己的工作效率&#xff0c;而且可以提高数据的准确度。我的教程一共九套一部VBA手册&#xff0c;教程分为初级、中级、高级三大部分。是对VBA的系统讲解&#xff0c;从简单的…...

Python下载音乐

今天我就来分享一下我的方法:Python爬虫 在CS dn社区中我浏览了许多关于爬虫代码&#xff0c;可都有各自的缺陷&#xff0c;有的需要ID比较麻烦&#xff0c;这里我编写了一个程序&#xff0c;他只需要输入歌曲名字即可进行搜索爬取并下载 话不多说&#xff0c;下面的程序复制…...

PCL ICP配准高阶用法——统计每次迭代的配准误差并可视化

目录 一、概述二、代码实现三、可视化代码四、结果展示本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫。 一、概述 在进行论文写作时,需要做对比实验,来分析改进算法的性能,期间用到了迭代误差分布统计的比较分析,为直…...

电脑卸载软件怎么清理干净?电脑清理的5种方法

随着我们在电脑上安装和卸载各种软件&#xff0c;很多时候我们会发现&#xff0c;即使软件被卸载&#xff0c;其残留的文件和注册表项仍然存在于电脑中&#xff0c;这不仅占用了宝贵的磁盘空间&#xff0c;还可能影响电脑的性能。那么&#xff0c;如何确保在卸载软件时能够彻底…...

LLM流式方案解决方案和客户端解决方案

背景 接上一篇《LLM大模型统一封装接口解决方案》架构确定后&#xff0c;流式方案非常规请求&#xff0c;需要特殊处理。 本解决方案就是针对上一篇中所需要的流式&#xff08;打字机效果进行编码&#xff09; 什么是SSE SSE&#xff08;Server-Sent Events&#xff0c;服务器发…...

ROS2 高效学习系列

ROS2 高效学习系列 1 说明2 正文 1 说明 2023 年&#xff0c;我们总结输出了 ROS高效入门系列 和 ROS高效进阶系列&#xff0c;系统学习了 ros1 基础知识和 ros 的机器人算法。由于 ros2 的普及&#xff0c;我们将系统学习 ros2 &#xff0c;包括 ros2 基础知识和相关高级组件…...

SpringBoot + MyBatisPlus分页查询

文章目录 1.思路分析2.分页查询后端实现1.com/sun/furn/config/MybatisConfig.java 注入MyBatisPlus分页拦截器2.com/sun/furn/controller/FurnController.java 添加方法3.postman测试 3.分页查询前端实现1.src/views/HomeView.vue 引入分页导航条组件2.src/views/HomeView.vue…...

AI编程提示词

你是 IDE 的 AI 编程助手&#xff0c;遵循核心工作流&#xff08;研究 -> 构思 -> 计划 -> 执行 -> 评审&#xff09;用中文协助用户&#xff0c;面向专业程序员&#xff0c;交互应简洁专业&#xff0c;避免不必要解释。[沟通守则] 1. 响应以模式标签 [模式&#…...

Spring事务回滚在系统中的应用

以文章发布为例&#xff0c;介绍Spring事务回滚在系统中的应用 事务回滚的核心概念 事务回滚是数据库管理系统中的关键机制&#xff0c;它确保数据库操作要么全部成功&#xff0c;要么全部失败。在Spring框架中&#xff0c;我们可以通过Transactional注解轻松实现事务管理。 …...

P3 QT记事本(3.4)

3.4 文件选择对话框 QFileDialog 3.4.1 QFileDialog 开发流程 使用 QFileDialog 的基本步骤通常如下&#xff1a; 实例化 &#xff1a;首先&#xff0c;创建一个 QFileDialog 对象的实例。 QFileDialog qFileDialog;设置模式 &#xff1a;根据需要设置对话框的模式&…...

clickhouse 和 influxdb 选型

以下是 ClickHouse、InfluxDB 和 HBase 在体系架构、存储引擎、数据类型、性能及场景的详细对比分析: 🏗️ ‌一、体系架构对比‌ ‌维度‌‌ClickHouse‌‌InfluxDB‌‌HBase‌‌设计目标‌大规模OLAP分析,高吞吐复杂查询 时序数据采集与监控,优化时间线管理高吞吐随机…...

C#子线程更新主线程UI及委托回调使用示例

1.声明线程方法 2.线程中传入对象 3.声明委托与使用 声明委托对象 委托作为参数传入方法 4.在线程中传入委托 5.调用传入的委托...

Python 函数全攻略:函数进阶(生成器、闭包、内置函数、装饰器、推导式)

一、默认参数中的易错点 问题: 当函数的默认参数是可变类型(如 list, dict)时,存在“坑”。 现象: def func(a2=[]): # a2 默认是一个空列表a2.append(2)print(a2)func() # 第一次调用,a2 默认为 [],输出 [2] func([]) # 传入新列表,输出 [2] func([1]) # 传入带元素的…...

华为云Flexus+DeepSeek征文|DeepSeek-V3/R1开通指南及使用心得

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;CSDN领军人物&#xff0c;全栈领域优质创作者✌&#xff0c;CSDN博客专家&#xff0c;阿里云社区专家博主&#xff0c;2023年CSDN全站排名top 28。 &#x1f3c6;数年电商行业从业经验&#xff0c;AWS/阿里云资深使用用…...

My图床项目

引言: 在海量文件存储中尤其是小文件我们通常会用上fastdfs对数据进行高效存储,在现实生产中fastdfs通常用于图片,文档,音频等中小文件。 一.项目中用到的基础组件(Base) 1.网络库(muduo) 我们就以muduo网络库为例子讲解IO多路复用和reactor网络模型 1.1 IO多路复用 我们可以…...

八股学习-JS的闭包

一.闭包的定义 闭包是指函数和其周围的词法环境的引用的组合。 简单来说&#xff0c;就是函数可以记住并访问其在定义时的作用域内的变量&#xff0c;即使该函数在其它作用域调用。 也就是说&#xff0c;闭包让你可以在一个内层函数中访问到其外层函数的作用域。 function …...

深入理解 transforms.Normalize():PyTorch 图像预处理中的关键一步

深入理解 transforms.Normalize()&#xff1a;PyTorch 图像预处理中的关键一步 在使用 PyTorch 进行图像分类、目标检测等深度学习任务时&#xff0c;我们常常会在数据预处理部分看到如下代码&#xff1a; python复制编辑transform transforms.Compose([transforms.ToTensor…...