写点什么

数据库每日一题 --- 第 14 天:用户推荐人

作者:知心宝贝
  • 2022 年 6 月 16 日
  • 本文字数:697 字

    阅读完需:约 2 分钟

数据库每日一题---第14天:用户推荐人

一、问题描述

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


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


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


对于上面的示例数据,结果为:


题目链接:用户推荐人

二、题目要求

样例

+------+| name |+------+| Will || Jane || Bill || Zack |+------+
复制代码

考察

1.条件语句2.建议用时10~25min
复制代码

三、问题分析

这一题就是一道普通的条件查询,但是要注意一点。我一开始直接使用下面的代码,


select namefrom  customerwhere referee_id!=2 
复制代码


结果查询之后的结果是只有Zack这个名字,对于referee_idnull但是也满足题目条件的结果无法判断,因为 = 或 != 只能判断基本数据类型,带 null 的列无法与值做比较。


所以,如果我们任然要使用这种方法时,需要在 where 语句的后面加一个referee_id is null,这样的话就可以判断结果。


这里涉及到一个小小的知识点,为什么判断是否为空是is null而不是=null呢?


很奇怪,是不是?小学的时候学的=就是表示相等关系。


但是null表示不确定的值,本身它不与任何值相等(包括其本身)。


is null 判断某个字符是否为空,并不代表空字符或者是 0


等于 null 是判断某个值是否等于null,所以不能使用=,只能使用is null或者is not null来判断。

四、编码实现

select namefrom  customerwhere referee_id!=2 or referee_id is null
复制代码

五、测试结果




发布于: 刚刚阅读数: 4
用户头像

知心宝贝

关注

公众号:穿越计算机的迷雾 2022.03.07 加入

生于尘埃 溺于人海 死于理想高台

评论

发布
暂无评论
数据库每日一题---第14天:用户推荐人_数据库_知心宝贝_InfoQ写作社区