[SQL刷题]LeetCode:183. 从不订购的客户

396 阅读1分钟

写在前面

题目

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

Customers 表:

Orders 表:

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

思路1

既然所谓的订购是指在在orders中出现过的,那没出现的就是没订购过的。

select name as Customers 
from Customers 
where id not in (select distinct customerid from orders)

这个思路基本能想到。那还要其他思路吗?

思路2

还可以用表连接的做法来实现, 客户表和订单表,不是所有客户都下了订单,那么客户会多显示,应该用左连接。 而没下过订单的客户,应该是显示id为空的。

select name as Customers 
from Customers c left join orders o on c.id = o.customerid
where o.id is null