Skip to content

Latest commit

 

History

History
78 lines (57 loc) · 1.44 KB

File metadata and controls

78 lines (57 loc) · 1.44 KB

English Version

题目描述

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

Customers 表:

+----+-------+
| Id | Name  |
+----+-------+
| 1  | Joe   |
| 2  | Henry |
| 3  | Sam   |
| 4  | Max   |
+----+-------+

Orders 表:

+----+------------+
| Id | CustomerId |
+----+------------+
| 1  | 3          |
| 2  | 1          |
+----+------------+

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

+-----------+
| Customers |
+-----------+
| Henry     |
| Max       |
+-----------+

解法

方法一:

列举所有已存在订单的客户 ID,使用 NOT IN 找到不存在其中的客户。

方法二:

使用 LEFT JOIN 连接表格,返回 CustomerIdNULL 的数据。

SQL

select Name as Customers
from Customers
where id not in (
        select CustomerId
        from Orders
    );
SELECT
    c.Name AS Customers
FROM
    customers AS c
    LEFT JOIN orders AS o ON c.Id  = o.CustomerId
WHERE
    o.CustomerId IS NULL;