【刷题记录】8.从不订购的客户

143 阅读1分钟

Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情

一、题目描述:

题目来源:LeetCode>从不订购的客户

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

Customers 表:

IdName
1Joe
2Henry
3Sam
4Max

Orders 表:

IdCustomerId
13
21

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

Customers
Henry
Max

二、思路分析:

  1. 首先处理这类问题,第一反应肯定是使用表关联解决,两表有个直接关联的字段CustomerId
  2. 其次,要找出不订购的顾客,那么可以在关联之后进行一个WHERE条件筛选
  3. 综上,需要使用到的关键字包括:LEFT JOIN、ON、WHERE

三、AC 代码:

SELECT NAME AS
	Customers 
FROM
	customers
	LEFT JOIN orders ON id = customerId 
WHERE
	customerId IS NULL;

四、总结:

此题主要是对于LEFT JOIN的使用,当然,也可以不使用LEFT JOIN,直接进行关联匹配,但是过程和代码都会麻烦很多,需要首先检索出有订单的顾客,再作为临时表,对Customers进行关联查询。

JOIN的解释说明:

LEFT JOIN:左连接,意思是左边的全保留,如果左边的和右边的不符合on的条件,那么左边对应右边的列自动为null。

INNER JOIN:内连接,获取两个表中字段匹配关系的记录;

RIGHT JOIN:右连接,与 LEFT JOIN相反,用于获取右表中的所有记录,即使左表没有对应匹配的记录。