183. 从不订购的客户
题目-简单难度
Customers 表:
Column Name | Type |
---|---|
id | int |
name | varchar |
在 SQL 中,id 是该表的主键。
该表的每一行都表示客户的 ID 和名称。
Orders 表:
Column Name | Type |
---|---|
id | int |
customerId | int |
在 SQL 中,id 是该表的主键。
customerId 是 Customers 表中 ID 的外键( Pandas 中的连接键)。
该表的每一行都表示订单的 ID 和订购该订单的客户的 ID。
找出所有从不点任何东西的顾客。
以 任意顺序 返回结果表。
结果格式如下所示。
示例
示例 1:
输入:
Customers table:
id | name |
---|---|
1 | Joe |
2 | Henry |
3 | Sam |
4 | Max |
Orders table:
id | customerId |
---|---|
1 | 3 |
2 | 1 |
输出:
Customers |
---|
Henry |
Max |
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/summary-ranges
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
1.
时间
323ms
击败 89.62%使用 MySQL 的用户
内存
0.00MB
击败 100.00%使用 MySQL 的用户
sql
-- 从Customer表中选择name列作为返回结果
SELECT c.name AS "Customers"
FROM Customers c
-- 使用LEFT JOIN将Customers表与Orders表关联
LEFT JOIN Orders o ON c.Id = o.CustomerId
-- 筛选没有订单的客户
WHERE o.CustomerId IS NULL
2.
时间
455ms
击败 37.75%使用 MySQL 的用户
内存
0.00MB
击败 100.00%使用 MySQL 的用户
sql
-- 从Customer表中选择name列作为返回结果,重命名为Customers
SELECT c.name AS "Customers"
FROM Customers c
-- 主查询选择子查询结果中没有出现的客户
WHERE c.id not in
-- 子查询返回Orders表中的customerid
(SELECT customerid FROM Orders)
3.
时间
324ms
击败 88.91%使用 MySQL 的用户
内存
0.00MB
击败 100.00%使用 MySQL 的用户
sql
-- 从Customer表中选择name列作为返回结果
SELECT c.name AS "Customers"
FROM Customers c
-- 使用LEFT JOIN将Customers表与Orders表关联
LEFT JOIN orders o ON c.id = o.customerId
-- 仅选择Orders表中id列为NULL的行,表示这些行没有对应的订单
WHERE ISNULL(o.id);