某网站包含两个表,Customers 表和 Orders 表。编写一个 SQL 查询,找出所有从不订购任何东西的客户。
Customers 表:
+----+-------+ | Id | Name | +----+-------+ | 1 | Joe | | 2 | Henry | | 3 | Sam | | 4 | Max | +----+-------+
Orders 表:
+----+------------+ | Id | CustomerId | +----+------------+ | 1 | 3 | | 2 | 1 | +----+------------+
例如给定上述表格,你的查询应返回:
+-----------+ | Customers | +-----------+ | Henry | | Max | +-----------+
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/customers-who-never-order
解题思路:观察两个表,可以猜测出Orders为订购表,所以出现在Orders中的CustomerId是订购过东西的,即没有出现在这个表中的CustomerId(即Customers表的Id)就是我们要的数据,需要使用not in。注意输出结果字段名为Customers,需要将Name利用as重新命名一下。
SQL语句:
select Name as Customers from Customers where Id not in(select CustomerId from Orders)