You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL多表查询练习:如何用单条SELECT语句关联多张表返回指定字段

结论

完全可以通过单条SELECT语句实现需求,核心逻辑是基于三个表的外键关联做连接查询即可。

表关联逻辑

三个表的关联关系如下:

  • customer 表的主键 id 和 sales_order 表的外键 customer_id 关联,匹配客户和对应的订单
  • sales_order 表的主键 id 和 sales_order_item 表的外键 sales_order_id 关联,匹配订单和对应的商品明细

所需字段的来源:

  • name:来源于 customer.name
  • order_number:来源于 sales_order.order_number
  • sku:来源于 sales_order_item.sku
  • value:即商品成本,来源于 sales_order_item.cost,别名重命名为value即可

实现语句

1. 仅返回有订单、且订单有商品明细的记录(INNER JOIN版本)

SELECT 
    c.name,
    so.order_number,
    soi.sku,
    soi.cost AS value
FROM customer c
INNER JOIN sales_order so ON c.id = so.customer_id
INNER JOIN sales_order_item soi ON so.id = soi.sales_order_id;

说明:该语句会过滤掉没有下单的客户(如测试数据中的Fernanda、Daniel),以及没有商品明细的订单,仅返回完整匹配的记录。

2. 返回所有客户记录,无订单/无明细字段补NULL(LEFT JOIN版本)

SELECT 
    c.name,
    so.order_number,
    soi.sku,
    soi.cost AS value
FROM customer c
LEFT JOIN sales_order so ON c.id = so.customer_id
LEFT JOIN sales_order_item soi ON so.id = soi.sales_order_id;

说明:该语句会保留所有客户信息,若客户没有订单,order_number、sku、value字段会自动填充为NULL。

内容的提问来源于stack exchange,提问作者Matheus Vinicius Duarte

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 22:18:03