住房和城鄉(xiāng)建設(shè)部網(wǎng)站安廣東省淘寶指數(shù)官網(wǎng)
大家好,我是空空star,本篇帶大家了解一道簡單的力扣sql練習(xí)題。
文章目錄
- 前言
- 一、題目:584. 尋找用戶推薦人
- 二、解題
- 1.正確示范①
- 提交SQL
- 運行結(jié)果
- 2.正確示范②
- 提交SQL
- 運行結(jié)果
- 3.正確示范③
- 提交SQL
- 運行結(jié)果
- 4.其他
- 總結(jié)
前言
一、題目:584. 尋找用戶推薦人
給定表 customer ,里面保存了所有客戶信息和他們的推薦人。
+------+------+-----------+
| id | name | referee_id|
+------+------+-----------+
| 1 | Will | NULL |
| 2 | Jane | NULL |
| 3 | Alex | 2 |
| 4 | Bill | NULL |
| 5 | Zack | 1 |
| 6 | Mark | 2 |
+------+------+-----------+
寫一個查詢語句,返回一個客戶列表,列表中客戶的推薦人的編號都 不是 2。
對于上面的示例數(shù)據(jù),結(jié)果為:
+------+
| name |
+------+
| Will |
| Jane |
| Bill |
| Zack |
+------+
二、解題
1.正確示范①
提交SQL
select name
from customer
where
(referee_id<>2
or referee_id is null
);
或者
select name
from customer
where
(referee_id!=2
or referee_id is null
);
或者
select name
from customer
where
(referee_id not in(2)
or referee_id is null
);
運行結(jié)果



2.正確示范②
提交SQL
select name from customer
where id not in (
select id from customer
where referee_id=2
);
運行結(jié)果

3.正確示范③
提交SQL
select name
from customer
where ifnull(referee_id,0)!=2
或者
select name
from customer
where ifnull(referee_id,0)<>2
或者
select name
from customer
where ifnull(referee_id,0) not in (2)
運行結(jié)果

4.其他
總結(jié)
正確示范①思路:
限定推薦人編號不等于2或者推薦人編號為NULL;
正確示范②思路:
先把推薦人編號是2的客戶id找出來,再從全部客戶中把客戶id是這部分的客戶排除掉;
正確示范③思路:
先把推薦人編號為NULL的編號轉(zhuǎn)化為0,再限定推薦人編號不等于2。
知識點:
MySQL中<>是不等號的意思。
sql中有兩種方式表示不等于,一種是"<>“(不含引號),另一種是”!="(不含引號),用法是一樣的。都會排除NULL的行。
IFNULL() 函數(shù)用于判斷第一個表達(dá)式是否為 NULL,如果為 NULL 則返回第二個參數(shù)的值,如果不為 NULL 則返回第一個參數(shù)的值。