LeetCode力扣-数据库584寻找用户推荐人
2022/6/1 2:50:24
本文主要是介绍LeetCode力扣-数据库584寻找用户推荐人,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
584题干
给定表 customer
,里面保存了所有客户信息和他们的推荐人。
写一个查询语句,返回一个客户列表,列表中客户的推荐人的编号都 不是 2。
SQL架构
Create table If Not Exists Customer (id int, name varchar(25), referee_id int) Truncate table Customer insert into Customer (id, name, referee_id) values ('1', 'Will', 'None') insert into Customer (id, name, referee_id) values ('2', 'Jane', 'None') insert into Customer (id, name, referee_id) values ('3', 'Alex', '2') insert into Customer (id, name, referee_id) values ('4', 'Bill', 'None') insert into Customer (id, name, referee_id) values ('5', 'Zack', '1') insert into Customer (id, name, referee_id) values ('6', 'Mark', '2')
示例
我的题解
首先观察该关系表,很容易想到如下语句:
SELECT name FROM customer WHERE referee_id != 2;
但是,以上语句是错误解,因为没有考虑到客户没有推荐人(推荐人为null值的情况)
于是又改进出以下题解:
# Write your MySQL query statement below SELECT name FROM customer WHERE referee_id = NULL OR referee_id <> 2
以上题解是错误的,原因是表达推荐人不为null的正确语法是
referee_id IS NULL
# Write your MySQL query statement below SELECT name FROM customer WHERE referee_id IS NULL AND referee_id <> 2
这里的错误是把OR写成了AND,以上是两个很基础的错误写法
# Write your MySQL query statement below 2 SELECT name 3 FROM customer WHERE name NOT IN (SELECT name 4 FROM customer 5 WHERE referee_id = 2);
以上是我自己写的题解,貌似没有错误,运行后却不通过
原因是在使用NOT IN时,最好使用主键ID来限定查询范围,使用姓名可能有重名的情况
改进后如下:
# Write your MySQL query statement below SELECT name FROM customer WHERE ID NOT IN (SELECT ID FROM customer WHERE referee_id = 2);
运行,通过!
优秀题解
# Write your MySQL query statement below SELECT name FROM customer WHERE referee_id != 2 AND referee_id IS NULL;
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/find-customer-referee/submissions/
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
搜索
复制
这篇关于LeetCode力扣-数据库584寻找用户推荐人的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-25【机器学习(二)】分类和回归任务-决策树(Decision Tree,DT)算法-Sentosa_DSML社区版
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享