[高频SQL50题(基础版)]第五百八十四题,寻找用户推荐人

题目:

表: 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 |
+------+

 这道题有很大的难度,因为要考虑SQL优化,只想简单的语句是会超出时间限制的,因为referee_id可能会很复杂

我的思路首先想到:

SELECT c.name
FROM Customer AS c
WHERE c.referee_id != 2

但是问题在于,没考虑到referee_id=null的情况,因为sql不同于java,当为null时只判断2是不可以的,所以加上下面的语句

SELECT c.name
FROM Customer AS c
WHERE c.referee_id != 2 OR c.referee_id IS NULL

这里虽然逻辑是对的,但是会超出时间限制,所以还是要优化sql修改代码

SELECT name
FROM Customer
WHERE referee_id != 2 OR referee_id IS NULL

 这里虽然通过了,但是时间太长了

我们看一下前面时间少的答案是怎么做的

# Write your MySQL query statement below
select name from Customer
where ifnull(referee_id, '') <> '2'

 

  1. IFNULL(referee_id, ''):
    • IFNULL 函数接受两个参数。如果第一个参数不是 NULL,它返回第一个参数的值;如果是 NULL,则返回第二个参数的值。
    • 在这里,如果 referee_id 是 NULL,函数将返回空字符串 ''
  2. <> '2':
    • 这部分比较 IFNULL 函数的结果是否不等于字符串 '2'

相关推荐

  1. 【力扣 | 分享】高频 SQL 50 基础

    2024-07-11 15:08:04       24 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-11 15:08:04       50 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-11 15:08:04       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-11 15:08:04       43 阅读
  4. Python语言-面向对象

    2024-07-11 15:08:04       54 阅读

热门阅读

  1. VUE2用elementUI实现父组件中校验子组件中的表单

    2024-07-11 15:08:04       18 阅读
  2. 解释一下DecorView和Window之间的交互。

    2024-07-11 15:08:04       21 阅读
  3. 【AI原理解析】-目标检测概述

    2024-07-11 15:08:04       17 阅读
  4. 24/07/10数据结构(4.1209)单链表OJ

    2024-07-11 15:08:04       20 阅读
  5. python批量读取Excel数据写入word

    2024-07-11 15:08:04       21 阅读
  6. 富格林:正确击破暗箱稳健出金

    2024-07-11 15:08:04       16 阅读
  7. 云原生监控-Kubernetes-Promethues-Grafana

    2024-07-11 15:08:04       12 阅读