高频SQL 50题(基础版): 寻找用户推荐人 | 2023-08-08
  5qeXmbowSd5Q 2023年11月02日 49 0

问题

表: Customer

+-------------+---------+
| Column Name | Type    |
+-------------+---------+
| id          | int     |
| name        | varchar |
| referee_id  | int     |
+-------------+---------+
在 SQL 中,id 是该表的主键列。
该表的每一行表示一个客户的 id、姓名以及推荐他们的客户的 id。

找出那些 没有被 id = 2 的客户 推荐 的客户的姓名。

以 任意顺序 返回结果表。

结果格式如下所示。

输入: 
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 |
+------+

解答

# Write your MySQL query statement below
select name from Customer where referee_id != "2" or referee_id is NULL;

解析

  • MySQL 使用三值逻辑 —— TRUE, FALSE 和 UNKNOWN。
  • 任何与 NULL 值进行的比较都会与第三种值 UNKNOWN 做比较。这个“任何值”包括 NULL 本身!
  • MySQL 提供 IS NULL 和 IS NOT NULL 两种操作来对 NULL 特殊判断。 unknown小写,是第三个真值。与作为NULL的一种UNKNOWN(未知)是不同的东西。小写是明确的布尔类型的真值,后者大写的既不是值也不是变量。
unknown = unknown -> true
UNKNOWN = UNKNOWN ->unknown
# 逻辑运算
NOT unknown => unknown
true OR unknown => true
unknown OR unknown => unknown
false OR unknown => unknown
# 优先级:
AND: false > unknown > true
OR: true > unknown > false
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
5qeXmbowSd5Q