MySQL编程实战LeetCode经典考题

2024-04-01 05:12

本文主要是介绍MySQL编程实战LeetCode经典考题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章简介

本文主要收集了LeetCode上关于MySQL的一些经典考题。
后续也会陆续把所有经典考题补充完整。

175.组合两个表

175.组合两个表
在这里插入图片描述
在这里插入图片描述

解答:

select p.FirstName as firstName, p.LastName as lastName,a.City as city, a.State as state 
from Person p 
left join 
Address a 
on p.PersonId=a.PersonId

说明:比较经典的一道左连接题目。首先,题目有两个表,其次提示是以首个表为中心,第二个表中属性不存在可以为null,从而确定是left join。

181.超过经理收入的员工

181.超过经理收入的员工
在这里插入图片描述
在这里插入图片描述

解答:
子查询方式(MySQL中的子查询指的是在主查询语句内部使用嵌套的SELECT语句)。找员工的薪资 > 员工的经理的薪资即可。

select name as Employee
from Employee e
where e.salary > (select salary from Employee t where t.id = e.managerId);

JOIN方式

SELECT a.NAME AS Employee
FROM Employee AS a 
JOIN Employee AS b 
ON a.ManagerId = b.Id 
AND a.Salary > b.Salary;

说明:对于只给单张表又有多个主题比较的情况,一般可以通过子查询或者内连接的方式来解决。

182. 查找重复的电子邮箱

182.查找重复的电子邮箱
在这里插入图片描述
在这里插入图片描述
解答:

select Email
from Person
group by Email
having count(Email) > 1;

说明:当出现去重的需求时,可以首先考虑分组查询 或 UNION联合查询。

196. 删除重复的电子邮箱

196. 删除重复的电子邮箱
在这里插入图片描述
在这里插入图片描述

解答:
方法一:嵌套

delete from Person where id not in
(select id from (select min(id) as id, count(*) as num from Person group by Email) t
);

方法二:DELETE + WHERE【官方,不易理解】

DELETE p1 FROM Person p1,Person p2
WHEREp1.Email = p2.Email AND p1.Id > p2.Id;

197. 上升的温度

197. 上升的温度
在这里插入图片描述
在这里插入图片描述
解答:
利用日期函数找到了昨天的日期 datediff(a.recordDate,b.recordDate) = 1

select a.id from  Weather as a,Weather as b where datediff(a.recordDate,b.recordDate) = 1 and a.Temperature >b.Temperature;

577. 员工奖金

577. 员工奖金
在这里插入图片描述
在这里插入图片描述
解答:

select name, bonus
from Employee left join Bonus
on Employee.EmpId = Bonus.EmpId
where bonus is null or bonus < 1000;

584. 寻找用户推荐人

584. 寻找用户推荐人
在这里插入图片描述
在这里插入图片描述
非常简单。解答:

select name from customer where referee_id != 2 or referee_id is null

586. 订单最多的客户

586. 订单最多的客户
在这里插入图片描述
在这里插入图片描述
解法1:

select customer_number from (
select customer_number, count(*) as total from Orders group by customer_number
) t
order by t.total desc
limit 1

解法2:【标准】
这里很明显需要分组,而且很特别的是,分组的和我们需要的是同一个字段
又因为需要的是最多的数据,所以这里使用LIMIT 1进行分表即可,SQL如下

SELECTcustomer_number
FROMorders
GROUP BY customer_number
ORDER BY COUNT(*) DESC
LIMIT 1;

595. 大的国家

595. 大的国家
在这里插入图片描述
在这里插入图片描述
非常简单:

SELECTname, population, area
FROMworld
WHEREarea >= 3000000 OR population >= 25000000;

596. 超过5名学生的课

596. 超过5名学生的课
在这里插入图片描述
在这里插入图片描述

方法一:
分组并count,然后数量大于等于5。很简单,有个临时表

select class from (
select class, count(*) as total from courses group by class
) t
where t.total >= 5

方法二:【标准解答】

SELECTclass
FROMcourses
GROUP BY class
HAVING COUNT(student) >= 5;

说明:有多个重复的数据且需要统计数量,一般使用GROUP BY

这篇关于MySQL编程实战LeetCode经典考题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/866275

相关文章

MySQL字符串转数值的方法全解析

《MySQL字符串转数值的方法全解析》在MySQL开发中,字符串与数值的转换是高频操作,本文从隐式转换原理、显式转换方法、典型场景案例、风险防控四个维度系统梳理,助您精准掌握这一核心技能,需要的朋友可... 目录一、隐式转换:自动但需警惕的&ld编程quo;双刃剑”二、显式转换:三大核心方法详解三、典型场景

MySQL中between and的基本用法、范围查询示例详解

《MySQL中betweenand的基本用法、范围查询示例详解》BETWEENAND操作符在MySQL中用于选择在两个值之间的数据,包括边界值,它支持数值和日期类型,示例展示了如何使用BETWEEN... 目录一、between and语法二、使用示例2.1、betwphpeen and数值查询2.2、be

MySQL快速复制一张表的四种核心方法(包括表结构和数据)

《MySQL快速复制一张表的四种核心方法(包括表结构和数据)》本文详细介绍了四种复制MySQL表(结构+数据)的方法,并对每种方法进行了对比分析,适用于不同场景和数据量的复制需求,特别是针对超大表(1... 目录一、mysql 复制表(结构+数据)的 4 种核心方法(面试结构化回答)方法 1:CREATE

SQL Server中行转列方法详细讲解

《SQLServer中行转列方法详细讲解》SQL行转列、列转行可以帮助我们更方便地处理数据,生成需要的报表和结果集,:本文主要介绍SQLServer中行转列方法的相关资料,需要的朋友可以参考下... 目录前言一、为什么需要行转列二、行转列的基本概念三、使用PIVOT运算符进行行转列1.创建示例数据表并插入数

Java 队列Queue从原理到实战指南

《Java队列Queue从原理到实战指南》本文介绍了Java中队列(Queue)的底层实现、常见方法及其区别,通过LinkedList和ArrayDeque的实现,以及循环队列的概念,展示了如何高效... 目录一、队列的认识队列的底层与集合框架常见的队列方法插入元素方法对比(add和offer)移除元素方法

MySQL MHA集群详解(数据库高可用)

《MySQLMHA集群详解(数据库高可用)》MHA(MasterHighAvailability)是开源MySQL高可用管理工具,用于自动故障检测与转移,支持异步或半同步复制的MySQL主从架构,本... 目录mysql 高可用方案:MHA 详解与实战1. MHA 简介2. MHA 的组件组成(1)MHA

Spring Boot基于 JWT 优化 Spring Security 无状态登录实战指南

《SpringBoot基于JWT优化SpringSecurity无状态登录实战指南》本文介绍如何使用JWT优化SpringSecurity实现无状态登录,提高接口安全性,并通过实际操作步骤... 目录Spring Boot 实战:基于 JWT 优化 Spring Security 无状态登录一、先搞懂:为什

C++11中的包装器实战案例

《C++11中的包装器实战案例》本文给大家介绍C++11中的包装器实战案例,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录引言1.std::function1.1.什么是std::function1.2.核心用法1.2.1.包装普通函数1.2.

SQL 注入攻击(SQL Injection)原理、利用方式与防御策略深度解析

《SQL注入攻击(SQLInjection)原理、利用方式与防御策略深度解析》本文将从SQL注入的基本原理、攻击方式、常见利用手法,到企业级防御方案进行全面讲解,以帮助开发者和安全人员更系统地理解... 目录一、前言二、SQL 注入攻击的基本概念三、SQL 注入常见类型分析1. 基于错误回显的注入(Erro

MySQL基本表查询操作汇总之单表查询+多表操作大全

《MySQL基本表查询操作汇总之单表查询+多表操作大全》本文全面介绍了MySQL单表查询与多表操作的关键技术,包括基本语法、高级查询、表别名使用、多表连接及子查询等,并提供了丰富的实例,感兴趣的朋友跟... 目录一、单表查询整合(一)通用模版展示(二)举例说明(三)注意事项(四)Mapper简单举例简单查询