183.从不订购的客户
一、题目描述
某网站包含两个表,Customers表和Orders表。编写一个SQL查询,找出所有从不订购任何东西的客户。
Customers表:
Id | Name |
---|---|
1 | Joe |
2 | Henry |
3 | Sam |
4 | Max |
Orders表:
Id | CustomerId |
---|---|
1 | 3 |
2 | 1 |
例如给定上述表格,你的查询应返回:
Customers |
---|
Henry |
Max |
二、思路分析
方法一:
Customers表左连接Orders表,临时表中CustomerId为Null的即所求。
方法二:
找出已经购买的客户作为子查询,不在子查询结果中的客户即所求。
三、代码实现
方法一:
SELECT
Name AS Customers
FROM
Customers c
LEFT JOIN
Orders o
ON
c.Id = o.CustomerId
WHERE
o.CustomerId is null;
方法二:
SELECT
Name AS Customers
FROM
Customers c
WHERE
c.Id NOT IN (
SELECT
CustomerId
FROM
Orders
);