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

通过Inventories.id关联三表批量查询deliveries记录的SQL写法

批量查询库存对应交付记录SQL方案

表关联关系梳理

涉及三张业务核心表,关联链路清晰:

  • Inventories:库存主表,主键id为库存唯一标识
  • delivery_items:交付明细表,是库存和交付单的中间关联表,通过fk_inventory字段关联Inventories.id,通过fk_delivery字段关联交付表主键
  • deliveries:交付主表,主键id为交付单唯一标识,存储所有交付单的核心业务信息

手动单条查询的逻辑是先查delivery_items拿到对应fk_delivery,再查deliveries拿交付信息,批量场景下直接用表关联即可,不需要分步查询。

可直接使用的SQL语句

写法1:返回库存+交付明细+交付主表全维度数据

适合需要同时导出库存信息、对应交付明细、交付单信息的统计报表场景:

SELECT
  inv.id AS inventory_id,
  -- 按需增删要返回的字段,不需要的字段可以直接注释或删除
  inv.goods_name,
  inv.stock_quantity,
  di.id AS delivery_item_id,
  di.delivery_count,
  d.delivery_no,
  d.delivery_time,
  d.receiver,
  d.delivery_status
FROM Inventories inv
INNER JOIN delivery_items di
  ON inv.id = di.fk_inventory
INNER JOIN deliveries d
  ON di.fk_delivery = d.id
WHERE inv.id IN (
  -- 括号内传入需要查询的库存ID集合,例如 1001,1002,1003
);

写法2:仅返回去重后的交付单记录

如果只需要拿到对应库存关联的所有交付单信息,不需要关联库存维度数据,用这个写法性能更高:

SELECT DISTINCT
  d.*
FROM deliveries d
INNER JOIN delivery_items di
  ON d.id = di.fk_delivery
WHERE di.fk_inventory IN (
  -- 括号内传入需要查询的库存ID集合
);

性能注意事项

针对15000+条库存ID的查询场景,请提前确认delivery_items表的fk_inventory、fk_delivery两个外键字段已建立普通索引,正常情况下查询可以在几百毫秒内返回结果,完全满足报表生成的性能要求。

内容的提问来源于stack exchange,提问作者Renan Cidale

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 19:42:14