传送门:寻找用户推荐人
题目
表: Customer
±------------±--------+
| Column Name | Type |
±------------±--------+
| id | int |
| name | varchar |
| referee_id | int |
±------------±--------+
在 SQL 中,id 是该表的主键列。
该表的每一行表示一个客户的 id、姓名以及推荐他们的客户的 id。
找出以下客户的姓名:
被任何 id != 2 的用户推荐。
没有被 任何用户推荐。
以 任意顺序 返回结果表。
结果格式如下所示。
示例 1:
输入:
Customer 表:
±---±-----±-----------+
| id | name | referee_id |
±---±-----±-----------+
| 1 | Will | null |
| 2 | Jane | null |
| 3 | Alex | 2 |
| 4 | Bill | null |
| 5 | Zack | 1 |
| 6 | Mark | 2 |
±---±-----±-----------+
输出:
±-----+
| name |
±-----+
| Will |
| Jane |
| Bill |
| Zack |
±-----+
解析
题目给了两个满足条件,是矛盾的,所以是或的关系,这点通过示例表格也可以验证,所以我们需要筛选两种客户,一种客户的推荐id为空,另一种不为2。
算法(标准SQL)
查询客户表,满足推荐id为空或不为2,返回姓名。
代码(标准SQL)
sql
select name
from Customer
where referee_id is null or referee_id !=2;