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

MySQL高阶1965-丢失信息的雇员

目录

题目

准备数据

分析数据

实现


题目

编写解决方案,找到所有 丢失信息 的雇员 id。当满足下面一个条件时,就被认为是雇员的信息丢失:

  • 雇员的 姓名 丢失了,或者
  • 雇员的 薪水信息 丢失了

返回这些雇员的 id  employee_id , 从小到大排序 

准备数据

Create table If Not Exists Employees (employee_id int, name varchar(30))
Create table If Not Exists Salaries (employee_id int, salary int)Truncate table Employeesinsert into Employees (employee_id, name) values ('2', 'Crew')insert into Employees (employee_id, name) values ('4', 'Haven')insert into Employees (employee_id, name) values ('5', 'Kristian')Truncate table Salariesinsert into Salaries (employee_id, salary) values ('5', '76071')insert into Salaries (employee_id, salary) values ('1', '22517')insert into Salaries (employee_id, salary) values ('4', '63539')
Salaries表

Employees表

 分析数据

第一步:通过union all对两个select语句进行连接,并通过左连接和右连接将不符合的数据为null

select e.Employee_id,e.name,s.salary
from Employees e left join Salaries s on e.employee_id=s.employee_id
union all
select s1.employee_id,e1.name,s1.salary
from Employees e1 right join Salaries s1 on e1.employee_id=s1.employee_id;

第二步:选出符合条件的,并且进行排序

with a as(select e.Employee_id,e.name,s.salaryfrom Employees e left join Salaries s on e.employee_id=s.employee_idunion allselect s1.employee_id,e1.name,s1.salaryfrom Employees e1 right join Salaries s1 on e1.employee_id=s1.employee_id)
select employee_id
from a
where name is null or salary is null
order by employee_id;

实现

with a as(select e.Employee_id,e.name,s.salaryfrom Employees e left join Salaries s on e.employee_id=s.employee_idunion allselect s1.employee_id,e1.name,s1.salaryfrom Employees e1 right join Salaries s1 on e1.employee_id=s1.employee_id)
select employee_id
from a
where name is null or salary is null
order by employee_id;

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Java 入门指南:JVM(Java虚拟机)垃圾回收机制 —— 新一代垃圾回收器 ZGC 收集器
  • MICS:PythonJail沙箱逃逸(持续更新中)
  • 初识C#(二)- 流程控制
  • 模拟自然的本质:与IBM量子计算研究的问答
  • Redis存储原理
  • 3、等保1.0 与 2.0 的区别
  • Mac强制停止应用
  • 数据结构总结
  • 学习记录:js算法(四十一): 基于时间的键值存储
  • Qt --- 常用控件的介绍 --- 其他控件
  • Vscode Run Code Py中文乱码问题
  • 市面第一款 C++ 版本的U盘装机软件(即将上线)
  • TCP: Textual-based Class-aware Prompt tuning for Visual-Language Model
  • 【java面经】Redis速记
  • 云原生链路观测平台 openobserve + fluent-bit,日志收集
  • -------------------- 第二讲-------- 第一节------在此给出链表的基本操作
  • [deviceone开发]-do_Webview的基本示例
  • 4个实用的微服务测试策略
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • ES6--对象的扩展
  • GDB 调试 Mysql 实战(三)优先队列排序算法中的行记录长度统计是怎么来的(上)...
  • overflow: hidden IE7无效
  • 从0搭建SpringBoot的HelloWorld -- Java版本
  • 关于Flux,Vuex,Redux的思考
  • 聊聊spring cloud的LoadBalancerAutoConfiguration
  • 跳前端坑前,先看看这个!!
  • 携程小程序初体验
  • 用jQuery怎么做到前后端分离
  • CMake 入门1/5:基于阿里云 ECS搭建体验环境
  • 机器人开始自主学习,是人类福祉,还是定时炸弹? ...
  • ​水经微图Web1.5.0版即将上线
  • # 计算机视觉入门
  • #pragma data_seg 共享数据区(转)
  • #单片机(TB6600驱动42步进电机)
  • $.ajax中的eval及dataType
  • (2015)JS ES6 必知的十个 特性
  • (4.10~4.16)
  • (51单片机)第五章-A/D和D/A工作原理-A/D
  • (7) cmake 编译C++程序(二)
  • (js)循环条件满足时终止循环
  • (react踩过的坑)Antd Select(设置了labelInValue)在FormItem中initialValue的问题
  • (独孤九剑)--文件系统
  • (理论篇)httpmoudle和httphandler一览
  • (三分钟了解debug)SLAM研究方向-Debug总结
  • (十)Flink Table API 和 SQL 基本概念
  • (转载)虚函数剖析
  • ******之网络***——物理***
  • ****Linux下Mysql的安装和配置
  • .bat批处理(三):变量声明、设置、拼接、截取
  • .net core使用ef 6
  • .Net IOC框架入门之一 Unity
  • .NET MVC 验证码
  • .NET MVC之AOP
  • .net 连接达梦数据库开发环境部署
  • .Net+SQL Server企业应用性能优化笔记4——精确查找瓶颈