本文主要是介绍[每日一练]查询从不订购的客户(标量子查询),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
该题目来源于力扣:
183. 从不订购的客户 - 力扣(LeetCode)
题目要求:
Customers
表:
+-------------+---------+ | Column Name | Type | +-------------+---------+ | id | int | | name | varchar | +-------------+---------+ 在 SQL 中,id 是该表的主键。 该表的每一行都表示客户的 ID 和名称。
Orders
表:
+-------------+------+ | Column Name | Type | +-------------+------+ | id | int | | customerId | int | +-------------+------+ 在 SQL 中,id 是该表的主键。 customerId 是 Customers 表中 ID 的外键( Pandas 中的连接键)。 该表的每一行都表示订单的 ID 和订购该订单的客户的 ID。
找出所有从不点任何东西的顾客。
以 任意顺序 返回结果表。
结果格式如下所示。
示例 1:
输入: Customers table: +----+-------+ | id | name | +----+-------+ | 1 | Joe | | 2 | Henry | | 3 | Sam | | 4 | Max | +----+-------+ Orders table: +----+------------+ | id | customerId | +----+------------+ | 1 | 3 | | 2 | 1 | +----+------------+ 输出: +-----------+ | Customers | +-----------+ | Henry | | Max | +-----------+
思路流程:
已知这两个表是有外键连接的,是ID列,所有我们可以直接对两个表进行子查询。这里我们可以发现:这两个表通过customerId和id是连接起来了,我们可以从这两个字段入手进行子查询
代码实现:
# Write your MySQL query statement below
SELECT C.name Customers from Customers C WHERE C.id not in (select customerId from Orders);
知识拓展:外键和主键:
-
主键(Primary Key):
- 主键是表中用于唯一标识每一行数据的字段或字段组合。
- 每个表只能有一个主键。
- 主键的值不能重复,且不能为空(NOT NULL)。
- 主键通常用于确保表中每行数据的唯一性,经常与外键一起使用来建立表与表之间的关联关系。
-
外键(Foreign Key):
- 外键是用于关联两个表的字段,它指向另一张表的主键。
- 外键可以确保一个表中的数据与另一张表中的数据存在关联关系。
- 通过外键,可以实现在一个表中引用另一个表中的数据,从而建立表与表之间的关联。
这篇关于[每日一练]查询从不订购的客户(标量子查询)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!