183.从不订购的用户

SQL架构:

1
2
3
4
5
6
7
8
9
10
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 表:

1
2
3
4
5
6
7
8
+
| Id | Name |
+
| 1 | Joe |
| 2 | Henry |
| 3 | Sam |
| 4 | Max |
+

Orders 表:

1
2
3
4
5
6
+----+------------+
| Id | CustomerId |
+----+------------+
| 1 | 3 |
| 2 | 1 |
+----+------------+

某网站包含两个表,Customers表和 Orders 表编写一个 SQL 查询,找出所有从不订购任何东西的客户。
例如给定上述表格,你的查询应返回:

1
2
3
4
5
6
+-----------+
| Customers |
+-----------+
| Henry |
| Max |
+-----------+

思路:

查询目标:Name(As Customers)
查询范围:Customers表和Orders表
查询条件:从不订购任何东西。

解答:

1
2
3
4
5
6
select
Customers.Name as Customers
from
Customers left join Orders on Customers.Id = Orders.CustomerId
where
Orders.Id is null