每日Leetcode刷题——sql篇1

第一题

 

表1: Person                                                                    表2: Address

+-------------+---------+                                                     +-------------+---------+
| 列名         | 类型    |                                                      | 列名         | 类型    |
+-------------+---------+                                                     +-------------+---------+
| PersonId    | int     |                                                      | AddressId   | int     |
| FirstName   | varchar |                                                | PersonId    | int     |
| LastName    | varchar |                                                | City        | varchar |
+-------------+---------+                                                     | State       | varchar |
PersonId 是上表主键                                                     +-------------+---------+
                                                                                    AddressId 是上表主键 

编写一个 SQL 查询,满足条件:无论 person 是否有地址信息,都需要基于上述两表提供 person 的以下信息:

FirstName, LastName, City, State

【思路】

从表的结构可以看出,表1(Person)是人的姓名信息,表2(Address)是人的地址信息。

1)查询结果是两个表里的列名,所以需要多表查询

2)考虑到有的人可能没有地址信息,要是查询结构要查所有人,需要保留表1(Person)里的全部数据,所以用左联结(left join)

3)两个表联结条件:两个表通过personId产生联结。

【我的答案】

select FirstName, LastName, City, State from Person left join Address on Person.PersonId = Address.PersonId

第二题

【思路】

1)表内存在重复数据,需要去重distinct

2)需要返回null

3)降序排序desc

4)限制查询结果limit的用法

5)别名AS

【我的答案】

select (select distinct Salary from Employee order by Salary desc limit 1,1) as SecondHighestSalary

第三题

【思路】

使用where语句或者join语句

【我的答案】

SELECT
    a.Name AS 'Employee'
FROM
    Employee AS a,
    Employee AS b
WHERE
    a.ManagerId = b.Id
        AND a.Salary > b.Salary

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值