【LeetCode数据库】 题目总结——经典题目题解与分析(一)--简单难度

本文总结了LeetCode数据库题目中的八道经典题目的解题思路,包括超过经理收入的员工、连续空余座位等。文章介绍了如何通过自联结、子查询、多表删除等方法解决SQL查询问题,帮助提升数据库操作技能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

这段时间,刷了LeetCode的数据库题目,挺有感触的。在刷这些题之前,我只写过一般的增删改查,尤其是查询操作,使用的也不是很灵活,只知道最基本的用法。

去刷了题目之后真的学到了很多不论是新的知识点还是一些组合用法,总之对数据库操作尤其是dql的使用更加熟练了。感谢其他leetcoder对各种知识点和解题套路的分享,学会这些小操作后,写sql头不疼了,腰不酸了,睡得着了,吃饭也更香了。

根据这些题,我总结了一些常用的知识点、小技巧以及部分有代表性的题解。

这篇文章就来分享一些有价值的题解。题目有些多,这篇先展示其中八题的题解。

剩下的在这里

  • 题目总结——经典题目题解与分析(二)–简单
  • 题目总结——经典题目题解与分析(三)–简单

超过经理收入的员工

题目链接
在这里插入图片描述
真的很经典的一道题了,按照题号开始刷题的话这是第一个碰上的不好写的题目。

主要难点在于对同一个表中某些行的特定字段进行比较。由于SQL不能像一般编程语言那样自由的对表中的数据进行“遍历”
对于这样的题,特点就是比较不同行的同一列,而非同一行的不同列,不便于直接处理。

解决它的方法就是进行自联结,在该表的笛卡尔积中我们能找到所有行与行的组合,再使用条件筛选出其中需要比较的行,剩下的问题就转化成了同一行的不同列进行比较。

select
    e1.name as employee
from 
    employee e1
    left join employee e2 on e1.managerId = e2.id
where
    e1.salary > e2.salary;

连续空余座位

题目链接
在这里插入图片描述
这个题目仍旧是比较一张表中同一字段的不同行。

直接使用自联结,将那些需要比较的行的组合(相邻的两行)筛选下来,进行同一行不同字段的比较。

select
    c1.seat_id
from 
    cinema c1
    left join cinema c2 on c1.seat_id = c2.seat_id - 1
    left join cinema c3 on c1.seat_id 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值