LeetCode Database 183 从不订购的客户

1. 题目描述

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

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 |
+----+------------+

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

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

2. 题解

2.1. MySQL (NOT IN)

1
2
3
4
SELECT tb1.Name AS Customers FROM Customers tb1
WHERE tb1.Id NOT IN (
SELECT DISTINCT(tb2.CustomerId) FROM Orders tb2
)

MySQL(LEFT JOIN)

1
2
3
4
SELECT tb1.Name AS Customers FROM Customers tb1
LEFT JOIN Orders tb2
ON tb1.Id = tb2.CustomerId
WHERE tb2.Id IS NULL
panchaoxin wechat
关注我的公众号
支持一下