- 使用ROW_NUMBER窗口函数替代子查询和JOIN操作 - 简化查询结构,提高执行效率 - 保留对coilIds的可选过滤条件 - 确保每个coilId只返回最新的记录
38 lines
1.5 KiB
XML
38 lines
1.5 KiB
XML
<?xml version="1.0" encoding="UTF-8" ?>
|
|
<!DOCTYPE mapper
|
|
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
|
<mapper namespace="com.klp.mapper.WmsDeliveryPlanCoilOperateMapper">
|
|
|
|
<resultMap type="com.klp.domain.WmsDeliveryPlanCoilOperate" id="WmsDeliveryPlanCoilOperateResult">
|
|
<result property="operateId" column="operate_id"/>
|
|
<result property="planId" column="plan_id"/>
|
|
<result property="coilId" column="coil_id"/>
|
|
<result property="operateType" column="operate_type"/>
|
|
<result property="createBy" column="create_by"/>
|
|
<result property="createTime" column="create_time"/>
|
|
<result property="remark" column="remark"/>
|
|
<result property="delFlag" column="del_flag"/>
|
|
<result property="updateBy" column="update_by"/>
|
|
<result property="updateTime" column="update_time"/>
|
|
</resultMap>
|
|
<select id="getCoilOperate" resultMap="WmsDeliveryPlanCoilOperateResult">
|
|
SELECT * FROM (
|
|
SELECT
|
|
t.*,
|
|
ROW_NUMBER() OVER (PARTITION BY t.coil_id ORDER BY t.create_time DESC) AS rn
|
|
FROM wms_delivery_plan_coil_operate t
|
|
WHERE plan_id = #{planId}
|
|
<if test="coilIds != null and coilIds.length > 0">
|
|
AND coil_id IN
|
|
<foreach collection="coilIds" item="coilId" open="(" separator="," close=")">
|
|
#{coilId}
|
|
</foreach>
|
|
</if>
|
|
) tmp
|
|
WHERE tmp.rn = 1
|
|
</select>
|
|
|
|
|
|
</mapper>
|