首页 > 数据库 >MySQL高阶1965-丢失信息的雇员

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

时间:2024-09-25 22:23:00浏览次数:9  
标签:salary name 1965 s1 Employees MySQL employee 高阶 id

目录

题目

准备数据

分析数据

实现


题目

编写解决方案,找到所有 丢失信息 的雇员 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 Employees
    insert 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 Salaries
    insert 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.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)
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.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)
select employee_id
from a
where name is null or salary is null
order by employee_id;

标签:salary,name,1965,s1,Employees,MySQL,employee,高阶,id
From: https://blog.csdn.net/weixin_58305115/article/details/142534512

相关文章

  • 快速部署MySQL数据库
    一.下载对应的软件版本下载地址:http://mirrors.sohu.com/mysql/MySQL-5.6/备用地址:http://ftp.ntu.edu.tw/pub/MySQL/Downloads/[root@localhost~]#wget-qhttp://mirrors.sohu.com/mysql/MySQL-5.6/sql-5.6.36-linux-glibc2.5-x86_64.tar.gz二、解压、配置用户和权限[root@loca......
  • mysql优化之sql语句优化、以及mysql一些高频面试题
    文章目录一、索引1、什么是索引2、添加索引的原则3、索引的优缺点4、索引分类5、mysql存储过程(方法)二、MySQL的逻辑架构1、逻辑架构2、MyISAM和InnoDB的区别三、mysql的索引数据结构1、BTree2、B+Tree四、缓冲池BufferPool1、预读机制2、预读失效3、淘汰策略五......
  • mysql数据库 - anolisos安装
    文章目录一、anolisos系统介绍1.1、anolisos系统的起源1.2、anolisos系统的版本支持1.3、anolisos系统的特点1.4、anolisos系统的适用场景二、环境部署2.1、修改主机名2.2、修改静态ip地址2.3、关闭selinux2.4、关闭或放通防火墙端口三、安装mysql数据库3.1、更新yum源......
  • Linux常用命令(Mysql)
    --删除表内数据(Mysql)usedc;#切换到待删除表所在的数据库truncatetable[表名]#删除表--数据库导入SQL文件数据(Mysql)sourcea.sql;--SQL增删改查insertintostudent(id,name,sex,birth)values('01','赵雷','男','1990');deletefromstudentwhereid=......
  • Windows Server 安装MySQL教程(图文)
    本篇教程,在服务器WindowsServer2016(中文版)上安装MySQL8.0,并记录详细的安装步骤。1、下载安装包在mysql官网上下载安装包下载地址:https://dev.mysql.com/downloads/installer/2、安装步骤下载之后,双击运行mysql-installer-community-8.0.39.0.msi如果双击无反应,那么需要安装一......
  • MySQL SQL基础常见面试题整理
    NOSQL和SQL的区别是什么?SQL数据库是指关系型数据库,主要有:SQLServer,Oracle,MySQL(开源),PostgreSQL(开源)。关系型数据库用于存储结构化数据,这些数据在逻辑上以行和列的二维表形式存在,每一列代表一个数据属性,每一行则代表一个数据实体。NoSQL是指非关系型数据库,主要有MongoDB和......
  • Linux中MySQL配置主主复制操作
    一、GTIDGTID(GlobalTransactionIdentifier)是MySQL的一种用于标识分布式环境中事务的全局唯一标识符。它在MySQL的主从复制场景中尤为重要,尤其是在使用MariaDB或MySQL5.6及更高版本的环境中。GTID由两部分组成:服务器ID(标识执行该事务的服务器)和事务序号(表示在该服务器上执......
  • 解读MySQL8.0数据字典重构源码
    摘要:本文对社区MySQL5.7到8.0演进过程中数据字典DD的重构(缓存,持久化),AtomicDDL的关键实现进行了分析。本文分享自华为云社区《【华为云MySQL技术专栏】MySQL8数据字典重构源码解读》,作者:GaussDB数据库1.背景介绍在MySQL5.7版本的使用实践过程中,我们很容易遇到DDL崩溃后导致数......
  • Windows 11 彻底卸载MySQL和安装
    Windows11彻底卸载MySQL和安装卸载1.关闭MySQL服务快捷键Win+R打开运行窗口输入services.msc打开服务窗口找到MySQL服务,停止此服务2.卸载MySql软件进入控制面板-程序和功能卸载一切和MySQL相关的软件3.删除MySQL相关文件夹如果安装时有指......
  • mysql flaot 不准
    (JDBC-MySql)概述JDBC全称JavaDataBaseConnectivity:java数据库连接在JDBC创建之前java程序员每操作一款关系型数据库就需要学习java连接该数据库代码,由于关系型数据库过多(如:oracle、db2、MySQL......),不可能全部学习,所以java程序员就期望SUN公司能研发出一套可以运行所有关系......