1. 简单
175. 组合两张表
编写一个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. 超过经理收入的员工*
编写一个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. 查找重复的电子邮箱
编写一个 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;
文章来源地址https://www.toymoban.com/news/detail-577676.html
文章来源:https://www.toymoban.com/news/detail-577676.html
到了这里,关于【LeetCode SQL练习笔记】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!