MySQL-复合查询

news2025/1/16 5:00:03

文章目录

      • 复合查询
        • 基础查询
        • 多表查询
          • 自连接
        • 子查询
            • 单行子查询
            • 多行子查询
            • 多列子查询
        • 合并查询
          • uion会自动去重
          • union all就是不去重
          • union all就是不去重

复合查询

基础查询

  • 查询工资高于500或者岗位为MANAGER的员工,同时名字首字母是J

    select * from emp where (sal>500 or job='MANAGER') and substr(ename,1,1)='J';

在这里插入图片描述

  • 按照部门号升序而员工的工资降序

    mysql> select * from emp order by deptno asc,sal desc;

    在这里插入图片描述

  • 年薪降序

    select ename,sal*12+ ifnull(comm,0) 年薪 from emp order by 年薪 desc;

在这里插入图片描述

  • 显示工资最高的员工的名字和工作岗位(子查询结果作为筛选条件)

    select ename,job,sal from emp where sal=(select max(sal) from emp);

    在这里插入图片描述

  • 显示工资高于平均工资的员工信息

    select *from emp where sal>(select avg(sal) from emp);

    在这里插入图片描述

  • 显示每个部门平均工资和最高工资

    select deptno,max(sal),avg(sal) from emp group by(deptno);

    在这里插入图片描述

  • 显示平均工资<2000的部门号和他的平均工资having

select deptno,avg(sal) from emp group by(deptno) having avg(sal)<2000;

在这里插入图片描述

  • 显示每种岗位的雇员总数和平均工资

    select job,avg(sal),count(*) from emp group by(job);

    在这里插入图片描述

多表查询

将一个表中的一条信息和另一个表的所有信息进行拼接,就是 笛卡尔积,将很多表拼接成一个表,所以将来的多表查询都是单表查询。穷举之后有很多信息是无效的,需要进行清洗。(可能一个人既是10号部门又是20部门)

所有select查询出来的记录,都可以把他看成表。先将所有表都拼接在一起,然后再进行清洗,再筛选你想要的东西。

  • 显示员工名工资和所在部门名字

    select ename,sal,emp.deptno,dname from emp,dept where emp.deptno=dept.deptno;

  • 显示部门号是10号的部门名,员工名和工资

    select ename,sal,emp.deptno, dname from emp,dept where dept.deptno=emp.deptno and emp.deptno=10;

  • 显示各个员工的姓命和工资和工资级别

    select ename,sal,grade from salgrade,emp where sal between losal and hisal;

自连接

就是相同的表做笛卡尔积,同一张表做连接查询叫做自连接。

  • 显示员工FORD上级领导的个人信息

    • 采用子查询的方式

    select empno,ename from emp where empno=(select empno from emp where ename='FORD');

    • 笛卡尔积的方式

      select leader.ename,leader.empno from emp leader,emp worker where worker.ename='FORD'and worker.mgr=leader.empno;

子查询

嵌套查询

单行子查询
  • 选出和SMITH 相同部门的人

select * from emp where deptno=(select deptno from emp where ename='SMITH');

多行子查询
  • in关键字,我是否是你们中的一元

    • 查询和10号部门的工作岗位相同的员工的名字,岗位,工资和部门号

      select ename,job,sal ,deptno from emp where job in (select job from emp where deptno =10)and deptno !=10;

  • all关键字,我比你们所有人都要怎样

    • 显示工资比部门30的所有员工的工资高的员工的姓名,公司和部门号

    select ename,sal,deptno from emp where sal> all(select sal from emp where deptno=30);

  • any关键字

    • 显示工资比部门30的任意员工的工资高的员工姓名工资和部门号

      select ename,sal,deptno from emp where sal> any(select distinct sal from emp where deptno=30); 30);

多列子查询
  • 单行多列子查询

    • 查询和SMITH部门和岗位完全相同的所有员工,不包含SMITH。

    select ename from emp where (deptno,job)=(select deptno,job from emp where ename='SMITH')and ename!='SMITH';

where条件和from字句中使用,所有的表都可以进行笛卡尔积进行穷举,所拥有的表都可认为是单表,那么如何将多表转化为单表。

  • 子查询语句出现在from后面

    • 显示每个高于自己部门平均工资的员工姓名部门平均工资

      select ename,emp.deptno,sal,myavg from emp,(select deptno,avg(sal) myavg from emp group by deptno) avg_tb where emp.deptno=avg_tb.deptno and emp.sal>avg_tb.myavg;

    在这里插入图片描述

    • 再加一个部门名称(表再进行拼接)

      select dname, ename,sal from dept,(select ename,emp.deptno,sal,myavg from emp,(select deptno,avg(sal) myavg from emp group by deptno) avg_tb where emp.deptno=avg_tb.deptno and emp.sal>avg_tb.myavg) tmp where dept.deptno=tmp.deptno;

    • 查找每个部门的最高工资的人的姓名,部门名,薪水。

      select ename,emp.deptno,sal from emp,(select deptno,max(sal) max_sal from emp group by(deptno)) max_tb whereemp.deptno=max_tb.deptno and emp.sal=max_sal;

    • 显示每个部门的信息(部门名编号地址)

      select dept.deptno,dname, loc,部门人数 from dept,(select deptno,count(*) 部门人数 from emp group by deptno) cnt_tb where dept.deptno=cnt_tb.deptno;

      第二种做法:

    在这里插入图片描述

    select dept.dname,dept.deptno,dept.loc,count(*) from emp,dept where emp.deptno=dept.deptno group by dept.deptnno,dept.dname,dept.deptno,dept.loc;

    如果有报错就将所有的筛选信息在后面都写一遍。

    this is incompatible with sql_mode=only_full_group_by

合并查询

就是将两个结果集的并集(常规+union)

uion会自动去重
  • 将工资大于2500或者职位是MANAGER的人找出来

    select * from emp where sal>2500 or job='MANAGER';

在这里插入图片描述

union all就是不去重

uion会自动去重

  • 将工资大于2500或者职位是MANAGER的人找出来

    select * from emp where sal>2500 or job='MANAGER';

在这里插入图片描述

union all就是不去重

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/93960.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ADI Blackfin DSP处理器-BF533的开发详解54:CVBS输出(含源码)

硬件准备 ADSP-EDU-BF533&#xff1a;BF533开发板 AD-HP530ICE&#xff1a;ADI DSP仿真器 软件准备 Visual DSP软件 硬件链接 CVBS OUT 视频输出 硬件实现原理 CVBS_OUT 子卡板连接在 ADSP-EDU-BF53x 开发板的扩展端口 PORT3 和 PORT4 上&#xff0c;板卡插入时&#xff0…

pytest + yaml 框架 -14.钉钉机器人通知测试结果

前言 当用例执行完成后&#xff0c;希望能给报告反馈&#xff0c;常见的报告反馈有&#xff1a;邮箱/钉钉群/飞书/企业微信 等。 pip 安装插件 pip install pytest-yaml-yoyo钉钉机器人通知测试结果功能在v1.1.1版本实现 钉钉机器人设置 钉钉机器人的设置请参考官方API文档…

实验2 VLAN的划分及VLAN间通信的配置

实验2 VLAN的划分及VLAN间通信的配置一、实验目的二、实验要求三、实验步骤&#xff0c;数据记录及处理四、实验总结一、实验目的 掌握VLAN的划分及VLAN间通信的配置方法 二、实验要求 交换机在没有划分虚拟网络时&#xff0c;都默认属于VLAN1&#xff0c;可以相互通信。通过…

【链表面试题】——剑指 Offer : 复杂链表(带随机指针)的复制

文章目录前言1.题目介绍2. 题目分析3. 思路讲解思路1思路2步骤1步骤2步骤34. 分析图及源码展示前言 这篇文章&#xff0c;我们一起来解决一道与链表相关的经典面试题&#xff1a;复杂链表&#xff08;带随机指针&#xff09;的复制。 1.题目介绍 我们先来一起了解一下这道题&…

Java的继承到底是怎么回事?看这篇让你明明白白

一. 引言 在学习面向对象后&#xff0c;我们就可以使用类来描述对象共有的特征(属性)和行为举止(方法)&#xff0c;如果我们用类来描述猫、狗和企鹅&#xff0c;可以进行如下编码&#xff1a; public class Cat {private String name;//名字private int age;//年龄private St…

操作系统,计算机网络,数据库刷题笔记11

操作系统&#xff0c;计算机网络&#xff0c;数据库刷题笔记11 2022找工作是学历、能力和运气的超强结合体&#xff0c;遇到寒冬&#xff0c;大厂不招人&#xff0c;可能很多算法学生都得去找开发&#xff0c;测开 测开的话&#xff0c;你就得学数据库&#xff0c;sql&#xf…

kubelet源码分析 syncLoopIteration(一) configCh

kubelet源码分析 syncLoopIteration syncLoopIteration里有四个chan管道。分别是configCh、plegCh、syncCh、housekeepingCh。这篇主要聊一下这四个管道的由来。 一、configCh configCh是通过list&watch的API SERVER获得的数据。然后在本地进行比对&#xff0c;推送到c…

Qt-Web混合开发-QtWebChannel实现Qt与Web通信交互-进阶功能(6)

Qt-Web混合开发-QtWebChannel实现Qt与Web通信交互-进阶功能&#x1f96c; 文章目录Qt-Web混合开发-QtWebChannel实现Qt与Web通信交互-进阶功能&#x1f96c;1、概述&#x1f33d;2、实现效果&#x1f346;3、实现功能&#x1f352;4、关键代码&#x1f95d;5、源代码&#x1f9…

Android基础学习(二十二)—— View的事件分发(1)

一、View的层级关系 二、View的事件分发机制 1、MotionEvent ——点击事件 点击事件用MotionEvent来表示 ACTION_DOWN&#xff1a;手指刚接触屏幕 ACTION_MOVE&#xff1a;手指在屏幕上移动 ACTION_UP&#xff1a;手指从屏幕上松开的一瞬间 点击事件的事件分发&#xff0…

OM6621系列国产M4F内核低功耗BLE5.1大内存SoC蓝牙芯片

目录OM6621系列简介OM6621P系列芯片特性应用领域OM6621系列简介 随着5G与物联网时代的到来&#xff0c;智慧城市、电动出行、智能家居、可穿戴设备等应用高速发展&#xff0c;低功耗蓝牙技术在近几年智能化浪潮中的地位也尤为重要。OM6621系列的开发即是为解决国内低功耗蓝牙应…

Linux安装docker 保姆级教程

一、docker介绍 Docker 是 2014 年最为火爆的技术之一&#xff0c;几乎所有的程序员都听说过它。Docker 是一种“轻量级”容器技术&#xff0c;它几乎动摇了传统虚拟化技术的地位&#xff0c;现在国内外已经有越来越多的公司开始逐步使用 Docker 来替换现有的虚拟化平台了。 二…

图为科技深圳人工智能产业协会重磅推出边缘计算机全新概念

人工智能作为提升区域竞争力的重要战略&#xff0c;全国各地都在推动发展&#xff0c;人工智能是未来科技创新发展的风向标&#xff0c;也是产业变革升级的关键驱动力&#xff0c;我国在《“十四五”数字经济发展规划》及《工业互联网创新发展行动计划(2021-2023年)》中&#x…

Linux基础(4)-进程管理

该文章主要为完成实训任务&#xff0c;详细实现过程及结果见【参考文章】 参考文章&#xff1a;https://howard2005.blog.csdn.net/article/details/127066383?spm1001.2014.3001.5502 文章目录一、查看进程1. 进程查看命令 - ps2. Liunx进程状态3. 观察进程变化命令 - top4. …

b站黑马的Vue快速入门案例代码——【axios+Vue】天知道(天气信息查询功能)

目录 目标效果&#xff1a; 更换的新接口接口文档&#xff1a; 天知道新的Get请求接口:http://ajax-api.itheima.net/api/weather html文件中注意因为接口更换&#xff0c;要修改原代码为如下红字部分&#xff1a; 重点原理&#xff1a; &#xff08;1&#xff09;v-on可以…

环形链表问题

文章目录环形链表问题1.环形链表题干思路延申问题总结2. 环形链表 II题干思路环形链表问题 环形链表就是一个链表没有结束的位置&#xff0c;链表的最后一个节点它会指向链表中的某一个节点形成一个环。 拿力扣的两到题目来看 1.环形链表 题干 给你一个链表的头节点 head …

JavaScript JSON解析

最近在uniapp中遇到了一个bug&#xff0c;排查后是json解析的问题。对uniapp开发比较熟悉的&#xff0c;应该会知道uni.navigateTo 这个API方法。这是官方提供用于跳转页面的方法。 有时候我们在跳转页面时会想传递一些参数&#xff0c;通常采用这样的方式 navigateTo(url, r…

oauth2.0--基础--6.1--SSO的实现原理

oauth2.0–基础–6.1–SSO的实现原理 1、什么是SSO 1.1、概念 在一个 多系统共存 的环境下&#xff0c;用户在一处登录后&#xff0c;就不用在其他系统中登录&#xff0c;就可以访问其他系统的资源。用户环境 浏览器&#xff1a;只能同一个浏览器&#xff0c;不会出现A浏览器…

zabbix部署【各模块超详细】

目录 安装zabbix 部署zabbix 配置zabbix 1. 修改语言 2. 监控linux端 3. 修改中文乱码 报警功能 报警音报警 邮件报警 脚本报警 邮件通知内容 图形模块 创建图形 创建聚合图形 percona mysql模板 nginx模板 克隆主机 网络发现 自动注册 主被动模式 &#x1f341;如果对你有帮助…

Handsontable复制列标题内容的功能

Handsontable复制列标题内容的功能 添加了通过使用3个新的上下文菜单选项复制列标题内容的功能&#xff1a;“使用标题复制”、“使用组标题复制”和“仅复制标题”。 添加了4个用于以编程方式复制列标题的新API方法&#xff1a;“copyCellsOnly()”、“copyWithColumnHeaders(…

vscode jupyter配置远程服务器开发

背景说明&#xff1a;本地vscode中使用jupyter编写本地python代码很方便&#xff0c;各种快捷键用的飞起。但是要做线上大数据分析时。在集群环境中搭建一个jupyter。使用网页端编写程序非常不习惯&#xff0c;所以想到能不能将线上的jupyter接口开出来&#xff0c;使用vscode远…