2022年10月更文挑战30-1-leetcode刷题514-寻找用户推荐人

108 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第30天,点击查看活动详情

leetcode刷题514-寻找用户推荐人

前文

本文内容主要是leetcode中数据库类型的刷题,主要是考察数据库查询时的操作处理。本文选择的执行方式可能不是最佳方案。本题目的链接为:leetcode.cn/problems/fi…

题目信息

给定表 customer ,里面保存了所有客户信息和他们的推荐人。

+------+------+-----------+
| id   | name | referee_id|
+------+------+-----------+
|    1 | Will |      NULL |
|    2 | Jane |      NULL |
|    3 | Alex |         2 |
|    4 | Bill |      NULL |
|    5 | Zack |         1 |
|    6 | Mark |         2 |
+------+------+-----------+

写一个查询语句,返回一个客户列表,列表中客户的推荐人的编号都 不是 2。

题目分析

本题目内容主要是对于数据库查询知识的考查。根据题目中的内容,我们在表中已经被提供了用户名、id以及客户的对应推荐人的信息。而根据题目的要求来说,需要我们从给定的数据表数据中进行查询,返回一个客户列表,列表要求客户的推荐人编号不是2。根据要求来分析,数据库中用户的推荐人为1,2以及空值三种情况。第一想法肯定是直接采用条件查询语句,只要推荐人不为2即可。但是由于空值的特殊性,如果我们直接在条件语句中设置条件不等于2,结果只能查找到推荐人为1的客户信息,会遗漏推荐人空值的情况。因此来说,我们需要通过or关系的关联,增加查询语句中推荐人为空的信息进行组合。也就是查询条件中包含两种情况,即可查询到所有推荐人不为2的客户信息结果。到这个位置,也就满足了题目对于答案的结果要求,实现了结果的实际查询。

解题答案及结果

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

image.png

后记

  • 千古兴亡多少事?悠悠。不尽长江滚滚流。