面试题答案
一键面试在这种情况下,应该选择 INNER JOIN
连接类型。理由如下:
- 需求匹配:我们的需求是查询每个订单中商品的名称和购买数量,即获取有实际订单关联的商品信息。
INNER JOIN
会返回两个表中满足连接条件的所有行,只有订单表和订单详情表、商品表之间存在匹配的关联数据时才会被包含在结果集中,能准确满足需求。例如,一个订单必然关联了具体的商品购买信息,INNER JOIN
能确保结果集里是真实存在订单关系的商品数据。 - 数据完整性:
INNER JOIN
不会返回没有订单关联的商品(即订单详情表中无对应订单ID和商品ID匹配项的商品),也不会返回没有关联商品的订单(即订单详情表中无对应订单ID匹配项的订单)。这保证了结果集中的数据是有实际业务关联的,对于电商系统中订单 - 商品关系的查询,这种数据完整性很重要。
SQL示例如下:
SELECT
products.product_name,
order_items.quantity
FROM
orders
-- 通过订单ID连接订单表和订单详情表
INNER JOIN order_items ON orders.order_id = order_items.order_id
-- 通过商品ID连接订单详情表和商品表
INNER JOIN products ON order_items.product_id = products.product_id;