【LeetCode SQL练习笔记】

SQL 笔记记录

    • [1. 简单](#1. 简单)
      • [175. 组合两张表](#175. 组合两张表)
      • [181. 超过经理收入的员工*](#181. 超过经理收入的员工*)
      • [182. 查找重复的电子邮箱](#182. 查找重复的电子邮箱)

1. 简单

175. 组合两张表

java 复制代码
编写一个SQL查询来报告 Person 表中每个人的姓、名、城市和州。如果 personId 的地址不在 Address 表中,则报告为空  null 。
答:题目中要求两张表,Address中的报告可以为空,要显示Person表的数据,很容易想到左连接,把Person当成主表然后left join 即可。
代码:
select p.Firstname,p.LastName,a.City,a.State from Person p left join Address a on p.PersonId=a.PersonId; 

181. 超过经理收入的员工*

java 复制代码
编写一个SQL查询来查找收入比经理高的员工。以 任意顺序 返回结果表。
答:这道题因为要查询的条件都在一张表里,所以可以使用自连接,将一张表当成两张表来使用
代码:
SELECT
    a.name AS Employee
FROM
    Employee AS a JOIN Employee AS b
    ON a.managerId = b.id
    AND a.salary > b.salary


或者可以使用笛卡尔积,然后筛选出满足条件的结果;
代码:
SELECT
    a.name AS Employee
FROM
    Employee AS a,
    Employee AS b
WHERE
    a.managerId = b.id
        AND a.salary > b.salary

182. 查找重复的电子邮箱

java 复制代码
编写一个 SQL 查询来报告所有重复的电子邮件。 请注意,可以保证电子邮件字段不为 NULL。
答:要求查找重复邮箱,首先可以想到以邮箱分组,组中条数多余1的自然是重复的。
代码:使用group by
:select Email from
(
  select Email, count(Email) as num
  from Person
  group by Email
) as  a 
where num > 1
;
或者group by 加having过滤
select Email
from Person
group by Email
having count(Email) > 1; 
相关推荐
午彦琳12 分钟前
2026.9.17
数据结构·算法·leetcode
木井巳34 分钟前
【记忆化搜索】不同路径
java·算法·leetcode·深度优先·剪枝·推荐算法
2601_965384261 小时前
口腔黏膜清洁的工程化路径:从表面形貌表征到清洁策略匹配
经验分享·笔记
泡泡鱼(敲代码中)1 小时前
Python 容器类型学习笔记:列表、元组、字典、集合
开发语言·笔记·python·pycharm
Hotchip_MEMS3 小时前
传统咪头与MEMS硅麦:雾化器气流传感方案对比
人工智能·笔记·物联网·电脑·制造
志尊宝3 小时前
Vue3 零基础每日笔记(040):Vite 创建 Vue3 + TS 项目——企业标配从这一篇开始
笔记·vue·html·前端开发·软件开发
水云桐程序员3 小时前
量子力学概论,量子力学概念总结
笔记·科技·学习·量子计算
darin_ฅ( ̳• ◡ • ̳)ฅ13 小时前
【 Obsidian】2026版-Obsidian安装Automatic Table of Contents 插件一键生成文章目录
笔记
2401_850122043 小时前
航空、轨交、汽车线束防护有什么不同?三大行业的共性、差异与选型逻辑
经验分享·笔记·科技
All for pursuit.3 小时前
【链表-9】146.LRU缓存
数据结构·c++·算法·leetcode