LeetCode-183.从不订购的客户

      发布在:未分类      评论:0 条评论

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

Customers 表:

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

Orders 表:

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

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

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

解题:

​ 不订购任何东西的客户,我们可以想到查询Orders表为NULL,Customers表有数据,那么可以考虑使用LEFT JOIN 条件:Customers表的Id = Orders表的CustomerId。(注意:使用WHERE,不能使用 AND,因为在这里WHERE是将两个表的结果集进行条件筛选,而AND是在第一次查询的时候进行条件筛选)。

AND输出结果:

{"headers": ["Customers"], "values": [["Joe"], ["Henry"], ["Sam"], ["Max"]]}

WHERE输出结果:

{"headers": ["Customers"], "values": [["Henry"], ["Max"]]}
SELECT
    c.Name Customers
FROM
    Customers c
LEFT JOIN
    Orders o
ON c.Id = o.CustomerId WHERE o.CustomerId IS NULL
Responses