重现步骤

[步骤]

SELECT swp.id,
               swp.position_code,
               swp.volume,
               IFNULL(swp.occupy_volume,0) occupy_volume,
               IFNULL(swp.pre_occupy_volume,0) pre_occupy_volume,
               wpa.warehouse_area_id,
               wa.area_name,
               w.ware_house_name
        FROM t_stk_warehouse_position swp
        LEFT JOIN t_stk_warehouse_post_area wpa ON wpa.position_id=swp.id and wpa.customer_id=swp.customer_id
        LEFT JOIN rb_ware_house w on w.id=swp.warehouse_id and w.customer_id=swp.customer_id
        LEFT JOIN t_stk_warehouse_area wa ON wa.id=wpa.warehouse_area_id AND wa.customer_id=wpa.customer_id
         
            LEFT JOIN (
                select COUNT(DISTINCT order_no) inventoryCount,position_id,warehouse_id,customer_id FROM t_stk_inventory_box_labels
                WHERE warehouse_id=16752 and customer_id=1 AND inventory>0
                GROUP BY position_id,warehouse_id,customer_id
            ) c on c.position_id=swp.id AND c.warehouse_id=swp.warehouse_id AND c.customer_id=swp.customer_id
            LEFT JOIN (
                select COUNT(DISTINCT pr.order_code) preCount,pr.recommend_position_id,pr.ware_house_id,pr.customer_id FROM t_stk_position_recommend_record pr
                WHERE pr.ware_house_id=16752 and pr.customer_id=1 and IFNULL(pr.is_deleted,0)=0 AND NOT EXISTS(
                    select 1 from t_stk_inventory_box_labels WHERE warehouse_id=pr.ware_house_id AND position_id=pr.recommend_position_id
                    AND customer_id=pr.customer_id AND order_no=pr.order_code AND inventory>0
                )
                GROUP BY pr.recommend_position_id,pr.ware_house_id,pr.customer_id
            )d on d.recommend_position_id=swp.id AND d.ware_house_id=swp.warehouse_id AND d.customer_id=swp.customer_id
         
        WHERE swp.customer_id=1 AND swp.warehouse_id=16752 and swp.is_active=1
         
         
            AND swp.position_state=1
         
         
            AND wpa.warehouse_area_id=590
         
         
         
            AND swp.position_type=4
         
         
         
            AND swp.limit_order_count-IFNULL(c.inventoryCount,0)-IFNULL(d.preCount,0)>0
         
        AND IFNULL(swp.volume,0)*0.9000-IFNULL(swp.occupy_volume,0)-IFNULL(swp.pre_occupy_volume,0)>=23232.000000000000
        AND wa.is_active_recommend=1
        ORDER BY IFNULL(swp.volume,0)-IFNULL(swp.occupy_volume ,0)-IFNULL(swp.pre_occupy_volume,0),position_code
        LIMIT 1

[结果]


[期望]

修改 SQL 语句 结构

SELECT 
    swp.id,
    swp.position_code,
    swp.volume,
    IFNULL(swp.occupy_volume, 0) AS occupy_volume,
    IFNULL(swp.pre_occupy_volume, 0) AS pre_occupy_volume,
    wpa.warehouse_area_id,
    wa.area_name,
    w.ware_house_name
FROM t_stk_warehouse_position swp
INNER JOIN t_stk_warehouse_post_area wpa 
    ON wpa.position_id = swp.id AND wpa.customer_id = swp.customer_id
INNER JOIN rb_ware_house w 
    ON w.id = swp.warehouse_id AND w.customer_id = swp.customer_id
INNER JOIN t_stk_warehouse_area wa 
    ON wa.id = wpa.warehouse_area_id AND wa.customer_id = wpa.customer_id

LEFT JOIN LATERAL (
    SELECT COUNT(DISTINCT order_no) AS inventoryCount
    FROM t_stk_inventory_box_labels
    WHERE warehouse_id = swp.warehouse_id 
      AND customer_id = swp.customer_id 
      AND position_id = swp.id 
      AND inventory > 0
) c ON TRUE
LEFT JOIN LATERAL (
    SELECT COUNT(DISTINCT pr.order_code) AS preCount
    FROM t_stk_position_recommend_record pr
    WHERE pr.ware_house_id = swp.warehouse_id 
      AND pr.customer_id = swp.customer_id 
      AND pr.recommend_position_id = swp.id
      AND IFNULL(pr.is_deleted, 0) = 0
      AND NOT EXISTS (
          SELECT 1 FROM t_stk_inventory_box_labels ibl
          WHERE ibl.warehouse_id = pr.ware_house_id 
            AND ibl.position_id = pr.recommend_position_id
            AND ibl.customer_id = pr.customer_id 
            AND ibl.order_no = pr.order_code 
            AND ibl.inventory > 0
      )
) d ON TRUE
WHERE swp.customer_id = 1 
  AND swp.warehouse_id = 16752 
  AND swp.is_active = 1
  AND swp.position_state = 1
  AND wpa.warehouse_area_id = 590
  AND swp.position_type = 4
  AND wa.is_active_recommend = 1
  AND swp.limit_order_count - IFNULL(c.inventoryCount, 0) - IFNULL(d.preCount, 0) > 0
  AND IFNULL(swp.volume, 0) * 0.9 - IFNULL(swp.occupy_volume, 0) - IFNULL(swp.pre_occupy_volume, 0) >= 23232
ORDER BY IFNULL(swp.volume, 0) - IFNULL(swp.occupy_volume, 0) - IFNULL(swp.pre_occupy_volume, 0), position_code
LIMIT 1;

秒出


历史记录  
  1. 2026-09-04 16:13:12, 由 袁慧斌 创建。
  2. 2026-09-07 08:55:48, 由 李乐同 指派给 程伟。
    修改了 指派给,旧值为 "liletong",新值为 "chengwei"。
  3. 2026-09-07 09:17:28, 由 程伟 指派给 唐飞飞。
    修改了 指派给,旧值为 "chengwei",新值为 "tangfeifei"。
  4. 2026-09-07 14:23:54, 由 唐飞飞 解决,方案为 性能问题 。
    修改了 解决方案,旧值为 "",新值为 "performance"。
    修改了 解决版本,旧值为 "",新值为 "trunk"。
    修改了 解决日期,旧值为 "",新值为 "2026-09-07 14:23:23"。
    修改了 指派给 ,旧值为 "tangfeifei",新值为 "yuanhuibin"。
    修改了 Bug状态 ,旧值为 "active",新值为 "resolved"。
    修改了 是否确认,旧值为 "0",新值为 "1"。
    修改了 解决者 ,旧值为 "",新值为 "tangfeifei"。
    已按照建议优化sql,待测试验证发版
  5. 2026-09-09 09:33:46, 由 袁慧斌 编辑。
    修改了 开发责任人,旧值为 "",新值为 "tangfeifei"。
    修改了 测试责任人,旧值为 "",新值为 "admin"。
    修改了 解决时效 ,旧值为 "0",新值为 "22.17"。
    修改了 截止日期 ,旧值为 "0000-00-00",新值为 "2026-09-08"。
    修改了 重现步骤 ,区别为:
    006- SELECT swp.id, swp.position_code, swp.volume, IFNULL(swp.occupy_volume, 0) AS occupy_volume, IFNULL(swp.pre_occupy_volume, 0) AS pre_occupy_volume, wpa.warehouse_area_id, wa.area_name, w.ware_house_nameFROM t_stk_warehouse_position swpINNER JOIN t_stk_warehouse_post_area wpa ON wpa.position_id = swp.id AND wpa.customer_id = swp.customer_idINNER JOIN rb_ware_house w ON w.id = swp.warehouse_id AND w.customer_id = swp.customer_idINNER JOIN t_stk_warehouse_area wa ON wa.id = wpa.warehouse_area_id AND wa.customer_id = wpa.customer_idLEFT JOIN LATERAL ( SELECT COUNT(DISTINCT order_no) AS inventoryCount FROM t_stk_inventory_box_labels WHERE warehouse_id = swp.warehouse_id AND customer_id = swp.customer_id AND position_id = swp.id AND inventory > 0) c ON TRUELEFT JOIN LATERAL ( SELECT COUNT(DISTINCT pr.order_code) AS preCount FROM t_stk_position_recommend_record pr WHERE pr.ware_house_id = swp.warehouse_id AND pr.customer_id = swp.customer_id AND pr.recommend_position_id = swp.id AND IFNULL(pr.is_deleted, 0) = 0 AND NOT EXISTS ( SELECT 1 FROM t_stk_inventory_box_labels ibl WHERE ibl.warehouse_id = pr.ware_house_id AND ibl.position_id = pr.recommend_position_id AND ibl.customer_id = pr.customer_id AND ibl.order_no = pr.order_code AND ibl.inventory > 0 )) d ON TRUEWHERE swp.customer_id = 1 AND swp.warehouse_id = 16752 AND swp.is_active = 1 AND swp.position_state = 1 AND wpa.warehouse_area_id = 590 AND swp.position_type = 4 AND wa.is_active_recommend = 1 AND swp.limit_order_count - IFNULL(c.inventoryCount, 0) - IFNULL(d.preCount, 0) > 0 AND IFNULL(swp.volume, 0) * 0.9 - IFNULL(swp.occupy_volume, 0) - IFNULL(swp.pre_occupy_volume, 0) >= 23232ORDER BY IFNULL(swp.volume, 0) - IFNULL(swp.occupy_volume, 0) - IFNULL(swp.pre_occupy_volume, 0), position_codeLIMIT 1;
    006+ SELECT swp.id, swp.position_code, swp.volume, IFNULL(swp.occupy_volume, 0) AS occupy_volume, IFNULL(swp.pre_occupy_volume, 0) AS pre_occupy_volume, wpa.warehouse_area_id, wa.area_name, w.ware_house_nameFROM t_stk_warehouse_position swpINNER JOIN t_stk_warehouse_post_area wpa ON wpa.position_id = swp.id AND wpa.customer_id = swp.customer_idINNER JOIN rb_ware_house w ON w.id = swp.warehouse_id AND w.customer_id = swp.customer_idINNER JOIN t_stk_warehouse_area wa ON wa.id = wpa.warehouse_area_id AND wa.customer_id = wpa.customer_idLEFT JOIN LATERAL ( SELECT COUNT(DISTINCT order_no) AS inventoryCount FROM t_stk_inventory_box_labels WHERE warehouse_id = swp.warehouse_id AND customer_id = swp.customer_id AND position_id = swp.id AND inventory > 0) c ON TRUELEFT JOIN LATERAL ( SELECT COUNT(DISTINCT pr.order_code) AS preCount FROM t_stk_position_recommend_record pr WHERE pr.ware_house_id = swp.warehouse_id AND pr.customer_id = swp.customer_id AND pr.recommend_position_id = swp.id AND IFNULL(pr.is_deleted, 0) = 0 AND NOT EXISTS ( SELECT 1 FROM t_stk_inventory_box_labels ibl WHERE ibl.warehouse_id = pr.ware_house_id AND ibl.position_id = pr.recommend_position_id AND ibl.customer_id = pr.customer_id AND ibl.order_no = pr.order_code AND ibl.inventory > 0 )) d ON TRUEWHERE swp.customer_id = 1 AND swp.warehouse_id = 16752 AND swp.is_active = 1 AND swp.position_state = 1 AND wpa.warehouse_area_id = 590 AND swp.position_type = 4 AND wa.is_active_recommend = 1 AND swp.limit_order_count - IFNULL(c.inventoryCount, 0) - IFNULL(d.preCount, 0) > 0 AND IFNULL(swp.volume, 0) * 0.9 - IFNULL(swp.occupy_volume, 0) - IFNULL(swp.pre_occupy_volume, 0) >= 23232ORDER BY IFNULL(swp.volume, 0) - IFNULL(swp.occupy_volume, 0) - IFNULL(swp.pre_occupy_volume, 0), position_codeLIMIT 1;
    006- <p>SELECT<br /> swp.id,<br /> swp.position_code,<br /> swp.volume,<br /> IFNULL(swp.occupy_volume, 0) AS occupy_volume,<br /> IFNULL(swp.pre_occupy_volume, 0) AS pre_occupy_volume,<br /> wpa.warehouse_area_id,<br /> wa.area_name,<br /> w.ware_house_name<br />FROM t_stk_warehouse_position swp<br />INNER JOIN t_stk_warehouse_post_area wpa<br /> ON wpa.position_id = swp.id AND wpa.customer_id = swp.customer_id<br />INNER JOIN rb_ware_house w<br /> ON w.id = swp.warehouse_id AND w.customer_id = swp.customer_id<br />INNER JOIN t_stk_warehouse_area wa<br /> ON wa.id = wpa.warehouse_area_id AND wa.customer_id = wpa.customer_id<br /><br />LEFT JOIN LATERAL (<br /> SELECT COUNT(DISTINCT order_no) AS inventoryCount<br /> FROM t_stk_inventory_box_labels<br /> WHERE warehouse_id = swp.warehouse_id<br /> AND customer_id = swp.customer_id<br /> AND position_id = swp.id<br /> AND inventory &gt; 0<br />) c ON TRUE<br />LEFT JOIN LATERAL (<br /> SELECT COUNT(DISTINCT pr.order_code) AS preCount<br /> FROM t_stk_position_recommend_record pr<br /> WHERE pr.ware_house_id = swp.warehouse_id<br /> AND pr.customer_id = swp.customer_id<br /> AND pr.recommend_position_id = swp.id<br /> AND IFNULL(pr.is_deleted, 0) = 0<br /> AND NOT EXISTS (<br /> SELECT 1 FROM t_stk_inventory_box_labels ibl<br /> WHERE ibl.warehouse_id = pr.ware_house_id<br /> AND ibl.position_id = pr.recommend_position_id<br /> AND ibl.customer_id = pr.customer_id<br /> AND ibl.order_no = pr.order_code<br /> AND ibl.inventory &gt; 0<br /> )<br />) d ON TRUE<br />WHERE swp.customer_id = 1<br /> AND swp.warehouse_id = 16752<br /> AND swp.is_active = 1<br /> AND swp.position_state = 1<br /> AND wpa.warehouse_area_id = 590<br /> AND swp.position_type = 4<br /> AND wa.is_active_recommend = 1<br /> AND swp.limit_order_count - IFNULL(c.inventoryCount, 0) - IFNULL(d.preCount, 0) &gt; 0<br /> AND IFNULL(swp.volume, 0) * 0.9 - IFNULL(swp.occupy_volume, 0) - IFNULL(swp.pre_occupy_volume, 0) &gt;= 23232<br />ORDER BY IFNULL(swp.volume, 0) - IFNULL(swp.occupy_volume, 0) - IFNULL(swp.pre_occupy_volume, 0), position_code<br />LIMIT 1;<br /></p>
    006+ <p>SELECT<br /> swp.id,<br /> swp.position_code,<br /> swp.volume,<br /> IFNULL(swp.occupy_volume, 0) AS occupy_volume,<br /> IFNULL(swp.pre_occupy_volume, 0) AS pre_occupy_volume,<br /> wpa.warehouse_area_id,<br /> wa.area_name,<br /> w.ware_house_name<br />FROM t_stk_warehouse_position swp<br />INNER JOIN t_stk_warehouse_post_area wpa<br /> ON wpa.position_id = swp.id AND wpa.customer_id = swp.customer_id<br />INNER JOIN rb_ware_house w<br /> ON w.id = swp.warehouse_id AND w.customer_id = swp.customer_id<br />INNER JOIN t_stk_warehouse_area wa<br /> ON wa.id = wpa.warehouse_area_id AND wa.customer_id = wpa.customer_id<br /><br />LEFT JOIN LATERAL (<br /> SELECT COUNT(DISTINCT order_no) AS inventoryCount<br /> FROM t_stk_inventory_box_labels<br /> WHERE warehouse_id = swp.warehouse_id<br /> AND customer_id = swp.customer_id<br /> AND position_id = swp.id<br /> AND inventory &gt; 0<br />) c ON TRUE<br />LEFT JOIN LATERAL (<br /> SELECT COUNT(DISTINCT pr.order_code) AS preCount<br /> FROM t_stk_position_recommend_record pr<br /> WHERE pr.ware_house_id = swp.warehouse_id<br /> AND pr.customer_id = swp.customer_id<br /> AND pr.recommend_position_id = swp.id<br /> AND IFNULL(pr.is_deleted, 0) = 0<br /> AND NOT EXISTS (<br /> SELECT 1 FROM t_stk_inventory_box_labels ibl<br /> WHERE ibl.warehouse_id = pr.ware_house_id<br /> AND ibl.position_id = pr.recommend_position_id<br /> AND ibl.customer_id = pr.customer_id<br /> AND ibl.order_no = pr.order_code<br /> AND ibl.inventory &gt; 0<br /> )<br />) d ON TRUE<br />WHERE swp.customer_id = 1<br /> AND swp.warehouse_id = 16752<br /> AND swp.is_active = 1<br /> AND swp.position_state = 1<br /> AND wpa.warehouse_area_id = 590<br /> AND swp.position_type = 4<br /> AND wa.is_active_recommend = 1<br /> AND swp.limit_order_count - IFNULL(c.inventoryCount, 0) - IFNULL(d.preCount, 0) &gt; 0<br /> AND IFNULL(swp.volume, 0) * 0.9 - IFNULL(swp.occupy_volume, 0) - IFNULL(swp.pre_occupy_volume, 0) &gt;= 23232<br />ORDER BY IFNULL(swp.volume, 0) - IFNULL(swp.occupy_volume, 0) - IFNULL(swp.pre_occupy_volume, 0), position_code<br />LIMIT 1;</p>
  6. 2026-09-09 09:33:49, 由 袁慧斌 关闭。
    修改了 Bug状态 ,旧值为 "resolved",新值为 "closed"。
    修改了 指派给 ,旧值为 "yuanhuibin",新值为 "closed"。
    修改了 由谁关闭,旧值为 "",新值为 "yuanhuibin"。
    修改了 关闭日期,旧值为 "",新值为 "2026-09-09 09:33:49"。
  7. 2026-09-11 10:13:33, 由 李乐同 编辑。
    修改了 解决时效,旧值为 "22.17",新值为 "2.28"。
    修改了 截止日期,旧值为 "2026-09-08",新值为 "2026-09-04"。
    修改了 上线时间,旧值为 "2026-09-08 18:30:00",新值为 "2026-09-04 18:30"。
    修改了 上线时效,旧值为 "50.28",新值为 "2.28"。
    修改了 解决日期,旧值为 "2026-09-07 14:23:23",新值为 "2026-09-04 18:30"。
    修改了 关闭日期,旧值为 "2026-09-09 09:33:49",新值为 "2026-09-04 20:30"。
所属项目 技术中心-需求池
所属模块 供应链   仓储物流   仓储
所属计划
所属迭代
Bug类型
严重程度 一般
优先级 P2
Bug状态 已关闭
业务部门 供应链管理中心
影响功能
开发责任人 唐飞飞
测试责任人 admin
解决时效 2.28
激活次数 0
激活日期
是否确认 是
当前指派 Closed 于 2026-09-11 10:13:33
截止日期 2026-09-04
上线时间 2026-09-04 18:30:00
上线时效 2.28
操作系统
浏览器
关键词
抄送给
所属迭代
相关需求
相关任务
由谁创建 袁慧斌 于 2026-09-04 16:13:11
影响环境 生产环境-线上测试
由谁解决 唐飞飞 于 2026-09-04 18:30:00
解决版本 主干
解决方案 性能问题
由谁关闭 袁慧斌 于 2026-09-04 20:30:00
最后修改 李乐同 于 2026-09-11 10:13:33
相关Bug