1. 题目描述
表: Customer
+---------------+---------+ | Column Name | Type | +---------------+---------+ | customer_id | int | | customer_name | varchar | +---------------+---------+ customer_id 是该表具有唯一值的列。 该表的每行包含网上商城的每一位顾客的信息。
表: Orders
+---------------+---------+ | Column Name | Type | +---------------+---------+ | order_id | int | | sale_date | date | | order_cost | int | | customer_id | int | | seller_id | int | +---------------+---------+ order_id 是该表具有唯一值的列。 该表的每行包含网上商城的所有订单的信息. sale_date 是顾客 customer_id 和卖家 seller_id 之间交易的日期.
表: Seller
+---------------+---------+ | Column Name | Type | +---------------+---------+ | seller_id | int | | seller_name | varchar | +---------------+---------+ seller_id 是该表主具有唯一值的列。 该表的每行包含每一位卖家的信息.
写一个解决方案, 报告所有在 2020
年度没有任何卖出的卖家的名字。
返回结果按照 seller_name
升序排列。
2.解答思路
on 和 where的区别
- on 是用于在表连接过程中提前进行对表进行筛选,如果是左连接,那就是对右表,反之亦然。
- where是在连接后对生成的新表格进行筛选
在这个问题中,我们需要先筛出2020年的数据再进行连接。因为如果先连接再筛选会将没有卖出数据的删掉。
3. 结果
select distinct
Seller.seller_name
from Seller left join Orders on Orders.seller_id = Seller.seller_id and year(Orders.sale_date) = 2020
where Orders.seller_id is null
order by Seller.seller_name