力扣刷题学习SQL篇——1-3 选择(从不订购的客户——使用not in)

  • Post author:
  • Post category:其他


力扣刷题学习SQL篇——1-3 选择(从不订购的客户——使用not in)



1、题目

题目链接:

https://leetcode.cn/problems/customers-who-never-order/




SQL架构

Create table If Not Exists Customers (id int, name varchar(255))
Create table If Not Exists Orders (id int, customerId int)
Truncate table Customers
insert into Customers (id, name) values ('1', 'Joe')
insert into Customers (id, name) values ('2', 'Henry')
insert into Customers (id, name) values ('3', 'Sam')
insert into Customers (id, name) values ('4', 'Max')
Truncate table Orders
insert into Orders (id, customerId) values ('1', '3')
insert into Orders (id, customerId) values ('2', '1')

某网站包含两个表,Customers 表和 Orders 表。编写一个 SQL 查询,找出所有从不订购任何东西的客户。

Customers 表:

+----+-------+
| Id | Name  |
+----+-------+
| 1  | Joe   |
| 2  | Henry |
| 3  | Sam   |
| 4  | Max   |
+----+-------+

Orders 表:

+----+------------+
| Id | CustomerId |
+----+------------+
| 1  | 3          |
| 2  | 1          |
+----+------------+

例如给定上述表格,你的查询应返回:

+-----------+
| Customers |
+-----------+
| Henry     |
| Max       |
+-----------+



2、自己的解法

很简单,那么顾客id不在订单表出现过就可以啦,我这里还多了一个去重,因为订单可能重复,不过这题去不去都可以过,去重了符合场景会快一点。

select c.Name Customers from Customers c where c.Id not in 
(select distinct o.CustomerId from Orders o )



版权声明:本文为weixin_43987277原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。