前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【SQL刷题系列】:leetcode183 Customers Who Never Order

【SQL刷题系列】:leetcode183 Customers Who Never Order

作者头像
Python数据科学
发布2018-11-07 17:58:04
5440
发布2018-11-07 17:58:04
举报
文章被收录于专栏:Python数据科学

(点击上方蓝色,快速关注)

SQL刷题系列:SQL作为一种数据库查询和程序设计语言,是从事数据技术人员必备的技能,也是各大公司的数据分析、数据挖掘、数据库等笔试题必考的一种题。所以,不论大家是转行还是学习都少不了这一关。为此,Python数据科学开启了SQL刷题的系列,希望可以帮助有需要的朋友们。 题目来源:本篇内容为Leetcode上SQL题库183 难易程度:简单

▌刷题回顾

【SQL刷题系列】:leetcode178 Rank Scores

▌题目描述

Suppose that a website contains two tables, the Customers table and the Orders table. Write a SQL query to find all customers who never order anything.

假设一个网站包含两个表: Customers和Orders。写出一个SQL查询语句找出所有没有任何订单的顾客。

Customers表:

代码语言:javascript
复制
+----+-------+
| Id | Name  |
+----+-------+
| 1  | Joe   |
| 2  | Henry |
| 3  | Sam   |
| 4  | Max   |
+----+-------+

Orders表:

代码语言:javascript
复制
+----+------------+
| Id | CustomerId |
+----+------------+
| 1  | 3          |
| 2  | 1          |
+----+------------+

使用上面两个表,你的查询结果应该与下面这样相同。

代码语言:javascript
复制
+-----------+
| Customers |
+-----------+
| Henry     |
| Max       |
+-----------+

▌参考答案

参考1:

代码语言:javascript
复制
select Name as Customers from Customers
where Id not in (select distinct CustomerId from Orders);

参考2:

代码语言:javascript
复制
select name AS Customers
from Customers LEFT JOIN Orders 
ON Customers.Id=Orders.CustomerId 
WHERE Orders.CustomerId IS NULL;

▌答案解析

参考1:通过查询select的嵌套使用。先在Orders表中返回所有有订单的客户Id,然后在Customer查询不在Orders表中的客户Id,最后返回相应的用户名字,即为最终结果。当然,也可以使用join通过连接两个表来实现

参考2:将Customers表的Id与Orders表的CustomerId建立左连接,那么Orders原本缺少的信息就会自动用NULL来代替。然后用where查询是NULL的用户名字即可。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-10-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python数据科学 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档