<?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.highdatas.mdm.mapper.TableInfoMapper">

    <select id="selectTableByName" parameterType="java.util.Map" resultType="String">
        show TABLES like #{tableName}
    </select>

    <select id="getTableField" parameterType="String" resultType="com.highdatas.mdm.entity.TableSchemaResult">
        select COLUMN_NAME as fieldName,DATA_TYPE as dbType from information_schema.COLUMNS where table_name = #{tableName} and table_schema = (select database())
    </select>

    <select id="getTableFieldFromDb" parameterType="com.highdatas.mdm.entity.TableSchema" resultType="com.highdatas.mdm.entity.TableSchemaResult">
        select COLUMN_NAME as fieldName,DATA_TYPE as dbType from information_schema.COLUMNS where table_name = #{tableName} and table_schema = #{dbName}
    </select>

    <select id="selectByPage" resultType="java.util.Map" statementType="STATEMENT" >
        select ${fields} from ${tableName} where ${where}  ${limit}
    </select>

    <select id="selectByPageByVersion" resultType="java.util.Map" statementType="STATEMENT" >
        <![CDATA[
        select  ${fields} from (
        SELECT
         ${A1fields} from (
        SELECT ${fields} from ${tableName} m
        WHERE NOT EXISTS (
          SELECT std_id FROM  ${tableTempName} tm
          LEFT JOIN maintain_detail ON tm.id = maintain_detail.pre_merge_id
		  LEFT JOIN maintain ON maintain.id = maintain_detail.parent_id
		    LEFT JOIN flows f on maintain.flow_id = f.id
		  WHERE  maintain.order_no <= ${fromOrderNo} and maintain.order_no > ${toOrderNo}
		  and operate = 'create'
		  AND tm.std_id = m.id
		  AND f.status = 'open'
		  and maintain.table_name = '${tableName}'
		  ) ) a1
		LEFT JOIN
		(
		SELECT   ${tempHFields} from ${tableTempName} h
        LEFT JOIN maintain_detail md on md.pre_merge_id = h.id
        LEFT JOIN maintain m on m.id = md.parent_id
        INNER JOIN (
        SELECT MIN(m.order_no) as order_no, mt.std_id FROM ${tableTempName} mt
        LEFT JOIN maintain_detail md on md.pre_merge_id = mt.id
        LEFT JOIN maintain m on m.id = md.parent_id
        LEFT JOIN flows f on m.flow_id = f.id
        WHERE m.order_no <= ${fromOrderNo} and m.order_no > ${toOrderNo} and  m.table_name = '${tableName}'
        and operate = 'update'
        AND f.status = 'open'
        GROUP BY mt.std_id
        ) a on a.order_no = m.order_no and a.std_id = h.std_id
		)a2 on a1.id = a2.id WHERE  a2.id is null
        UNION
        SELECT
         ${A2fields}
        from (
        SELECT ${fields} from ${tableName} m
        WHERE NOT EXISTS (
          SELECT std_id FROM  ${tableTempName} tm
          LEFT JOIN maintain_detail ON tm.id = maintain_detail.pre_merge_id
		  LEFT JOIN maintain ON maintain.id = maintain_detail.parent_id
		  LEFT JOIN flows f on maintain.flow_id = f.id
		  WHERE  maintain.order_no <= ${fromOrderNo} and maintain.order_no > ${toOrderNo}
		  and operate = 'create'
		  AND f.status = 'open'
		  AND tm.std_id = m.id
		  and maintain.table_name = '${tableName}'
		  ) ) a1
		LEFT JOIN
		(
		SELECT   ${tempHFields} from ${tableTempName} h
        LEFT JOIN maintain_detail md on md.pre_merge_id = h.id
        LEFT JOIN maintain m on m.id = md.parent_id
        INNER JOIN (
        SELECT MIN(m.order_no) as order_no, mt.std_id FROM ${tableTempName} mt
        LEFT JOIN maintain_detail md on md.pre_merge_id = mt.id
        LEFT JOIN maintain m on m.id = md.parent_id
        LEFT JOIN flows f on m.flow_id = f.id
        WHERE m.order_no <= ${fromOrderNo} and m.order_no > ${toOrderNo} and m.table_name = '${tableName}'
        and operate = 'update'
        AND f.status = 'open'
        GROUP BY mt.std_id
        ) a on a.order_no = m.order_no and a.std_id = h.std_id
		)a2 on a1.id = a2.id WHERE  a2.id is not null
			UNION
		SELECT ${tempFields} FROM maintain_detail md
        LEFT JOIN maintain ON maintain.id = md.parent_id
        LEFT JOIN flows f on maintain.flow_id = f.id
        LEFT JOIN ${tableTempName} mt on mt.id = md.pre_merge_id
        WHERE maintain.order_no <= ${fromOrderNo} and maintain.order_no > ${toOrderNo} AND operate = 'delete'
         AND f.status = 'open'
         and  maintain.table_name = '${tableName}'
        AND NOT EXISTS (
            SELECT * FROM maintain_detail
            LEFT JOIN maintain ON maintain.id = maintain_detail.parent_id
            LEFT JOIN ${tableTempName} mt1 on mt1.id = maintain_detail.pre_merge_id
            LEFT JOIN flows f on maintain.flow_id = f.id
            WHERE  maintain.order_no <= ${fromOrderNo} and maintain.order_no > ${toOrderNo}
            AND operate = 'create'
            AND f.status = 'open'
            AND mt.std_id = mt1.std_id
            and  maintain.table_name = '${tableName}'
        )
        )a where  ${where} ${limit}
         ]]>
    </select>

    <select id="selectByPageByMaxVersion" resultType="java.util.Map" statementType="STATEMENT" >
         <![CDATA[
        select  ${fields},operate, status from (
        SELECT
         ${A1fields}, '' as operate, '' as status from (
        SELECT ${fields} from ${tableName} m
        WHERE NOT EXISTS (
          SELECT std_id FROM  ${tableTempName} tm
          LEFT JOIN maintain_detail ON tm.id = maintain_detail.pre_merge_id
		  LEFT JOIN maintain ON maintain.id = maintain_detail.parent_id
		  WHERE  maintain.order_no <= ${fromOrderNo} and maintain.order_no > ${toOrderNo}
		  AND tm.std_id = m.id
		  and  maintain.table_name = '${tableName}'
		  ) ) a1
		LEFT JOIN
		(
		SELECT   ${tempHFields} from ${tableTempName} h
        LEFT JOIN maintain_detail md on md.pre_merge_id = h.id
        LEFT JOIN maintain m on m.id = md.parent_id
        INNER JOIN (
        SELECT max(m.order_no) as order_no, mt.std_id FROM ${tableTempName} mt
        LEFT JOIN maintain_detail md on md.pre_merge_id = mt.id
        LEFT JOIN maintain m on m.id = md.parent_id
        WHERE m.order_no <= ${fromOrderNo} and m.order_no > ${toOrderNo} and  m.table_name = '${tableName}'
        and operate = 'update'
        GROUP BY mt.std_id
        ) a on a.order_no = m.order_no and a.std_id = h.std_id
		)a2 on a1.id = a2.id WHERE  a2.id is null
        UNION
        SELECT
         ${A2fields}, 'update' as operate, a2.status as status
        from (
        SELECT ${fields} from ${tableName} m
        ) a1
		LEFT JOIN
		(
		SELECT   ${tempHFields}, f.status from ${tableTempName} h
        LEFT JOIN maintain_detail md on md.pre_merge_id = h.id
        LEFT JOIN maintain m on m.id = md.parent_id
        LEFT JOIN flows f on m.flow_id = f.id
        INNER JOIN (
        SELECT max(m.order_no) as order_no, mt.std_id FROM ${tableTempName} mt
        LEFT JOIN maintain_detail md on md.pre_merge_id = mt.id
        LEFT JOIN maintain m on m.id = md.parent_id
        WHERE m.order_no <= ${fromOrderNo} and m.order_no > ${toOrderNo} and  m.table_name = '${tableName}'
        and operate = 'update'
        GROUP BY mt.std_id
        ) a on a.order_no = m.order_no and a.std_id = h.std_id
		)a2 on a1.id = a2.id WHERE  a2.id is not null
		UNION
		SELECT ${tempFields}, 'create' as operate, f.status as status FROM maintain_detail md
        LEFT JOIN maintain ON maintain.id = md.parent_id
        LEFT JOIN flows f on maintain.flow_id = f.id
        LEFT JOIN ${tableTempName} mt on mt.id = md.pre_merge_id
        WHERE maintain.order_no <= ${fromOrderNo} and maintain.order_no > ${toOrderNo} AND operate = 'create'
        and  maintain.table_name = '${tableName}'
        AND NOT EXISTS (
            SELECT * FROM maintain_detail
            LEFT JOIN maintain ON maintain.id = maintain_detail.parent_id
            LEFT JOIN ${tableTempName} mt1 on mt1.id = maintain_detail.pre_merge_id
            WHERE  maintain.order_no <= ${fromOrderNo} and maintain.order_no > ${toOrderNo}
            AND operate = 'delete'
            AND mt.std_id = mt1.std_id
            and maintain.table_name = '${tableName}'
        )
        UNION
		SELECT ${tempFields}, 'delete' as operate, f.status as status FROM maintain_detail md
        LEFT JOIN maintain ON maintain.id = md.parent_id
        LEFT JOIN flows f on maintain.flow_id = f.id
        LEFT JOIN ${tableTempName} mt on mt.id = md.pre_merge_id
        WHERE maintain.order_no <= ${fromOrderNo} and maintain.order_no > ${toOrderNo} AND operate = 'delete'
         and maintain.table_name = '${tableName}'
        AND NOT EXISTS (
            SELECT * FROM maintain_detail
            LEFT JOIN maintain ON maintain.id = maintain_detail.parent_id
            LEFT JOIN ${tableTempName} mt1 on mt1.id = maintain_detail.pre_merge_id
            WHERE  maintain.order_no <= ${fromOrderNo} and maintain.order_no > ${toOrderNo}
            AND operate = 'create'
            AND mt.std_id = mt1.std_id
            and  maintain.table_name = '${tableName}'
        )
        )a where  ${where} ${limit}
         ]]>
    </select>

    <select id="select" resultType="java.util.Map" statementType="STATEMENT" >
        select ${fields} from ${tableName} where ${where}
    </select>

    <select id="tempDeal"  statementType="STATEMENT" resultType="java.lang.Integer">

        UPDATE ${tableTempName} t
        SET deal = 1
        where EXISTS (
        SELECT pre_merge_id from maintain_detail WHERE parent_id = ${maintainId}
        and maintain_detail.pre_merge_id = t.id
        )
        </select>

    <select id="getCount" resultType="java.lang.Long" statementType="STATEMENT" >
        select count(1) from ${tableName} where ${where}
    </select>

    <select id="getCountByVersion" resultType="java.lang.Long" statementType="STATEMENT" >
        <![CDATA[
        select count(1) from (
        SELECT
         ${A1fields}
        from (
        SELECT ${fields} from ${tableName} m
        WHERE NOT EXISTS (
          SELECT std_id FROM  ${tableTempName} tm
          LEFT JOIN maintain_detail ON tm.id = maintain_detail.pre_merge_id
		  LEFT JOIN maintain ON maintain.id = maintain_detail.parent_id
		  LEFT JOIN flows f on maintain.flow_id = f.id
		  WHERE  maintain.order_no <= ${fromOrderNo} and maintain.order_no > ${toOrderNo}
		  and  maintain.table_name = '${tableName}'
		  AND f.status = 'open'
		  and operate = 'create'
		  AND tm.std_id = m.id
		  ) ) a1
		LEFT JOIN
		(
		SELECT   ${tempHFields} from ${tableTempName} h
        LEFT JOIN maintain_detail md on md.pre_merge_id = h.id
        LEFT JOIN maintain m on m.id = md.parent_id
        INNER JOIN (
        SELECT MIN(m.order_no) as order_no, mt.std_id FROM ${tableTempName} mt
        LEFT JOIN maintain_detail md on md.pre_merge_id = mt.id
        LEFT JOIN maintain m on m.id = md.parent_id
        LEFT JOIN flows f on m.flow_id = f.id
        WHERE m.order_no <= ${fromOrderNo} and m.order_no > ${toOrderNo} and  m.table_name = '${tableName}'
        and operate = 'update'
        AND f.status = 'open'
        GROUP BY mt.std_id
        ) a on a.order_no = m.order_no and a.std_id = h.std_id
		)a2 on a1.id = a2.id WHERE  a2.id is null
        UNION
        SELECT
         ${A2fields}
        from (
        SELECT ${fields} from ${tableName} m
        WHERE NOT EXISTS (
          SELECT std_id FROM  ${tableTempName} tm
          LEFT JOIN maintain_detail ON tm.id = maintain_detail.pre_merge_id
		  LEFT JOIN maintain ON maintain.id = maintain_detail.parent_id
		  LEFT JOIN flows f on maintain.flow_id = f.id
		  WHERE  maintain.order_no <= ${fromOrderNo} and maintain.order_no > ${toOrderNo}
		   and maintain.table_name = '${tableName}'
		   AND f.status = 'open'
		  and operate = 'create'
		  AND tm.std_id = m.id
		  ) ) a1
		LEFT JOIN
		(
		SELECT   ${tempHFields} from ${tableTempName} h
        LEFT JOIN maintain_detail md on md.pre_merge_id = h.id
        LEFT JOIN maintain m on m.id = md.parent_id
        INNER JOIN (
        SELECT MIN(m.order_no) as order_no, mt.std_id FROM ${tableTempName} mt
        LEFT JOIN maintain_detail md on md.pre_merge_id = mt.id
        LEFT JOIN maintain m on m.id = md.parent_id
        LEFT JOIN flows f on m.flow_id = f.id
        WHERE m.order_no <= ${fromOrderNo} and m.order_no > ${toOrderNo}  and m.table_name = '${tableName}'
        and operate = 'update'
        AND f.status = 'open'
        GROUP BY mt.std_id
        ) a on a.order_no = m.order_no and a.std_id = h.std_id
		)a2 on a1.id = a2.id WHERE  a2.id is not null
		UNION
		SELECT ${tempFields} FROM maintain_detail md
        LEFT JOIN maintain ON maintain.id = md.parent_id
        LEFT JOIN ${tableTempName} mt on mt.id = md.pre_merge_id
        LEFT JOIN flows f on maintain.flow_id = f.id
        WHERE maintain.order_no <= ${fromOrderNo} and maintain.order_no > ${toOrderNo}
        and  maintain.table_name = '${tableName}'
        AND f.status = 'open'
        AND operate = 'delete'
        AND NOT EXISTS (
            SELECT * FROM maintain_detail
            LEFT JOIN maintain ON maintain.id = maintain_detail.parent_id
            LEFT JOIN ${tableTempName} mt1 on mt1.id = maintain_detail.pre_merge_id
            LEFT JOIN flows f on maintain.flow_id = f.id
            WHERE  maintain.order_no <= ${fromOrderNo} and maintain.order_no > ${toOrderNo}
            AND operate = 'create'
            AND f.status = 'open'
            AND mt.std_id = mt1.std_id
            and  maintain.table_name = '${tableName}'
        )
        )a where  ${where}
         ]]>
    </select>

    <select id="getCountByMaxVersion" resultType="java.lang.Long" statementType="STATEMENT" >
       <![CDATA[
        select count(1) from (
        SELECT
         ${A1fields}, '' as operate, '' as status from (
        SELECT ${fields} from ${tableName} m
        WHERE NOT EXISTS (
          SELECT std_id FROM  ${tableTempName} tm
          LEFT JOIN maintain_detail ON tm.id = maintain_detail.pre_merge_id
		  LEFT JOIN maintain ON maintain.id = maintain_detail.parent_id
		  WHERE  maintain.order_no <= ${fromOrderNo} and maintain.order_no > ${toOrderNo}
		  and  maintain.table_name = '${tableName}'
		  AND tm.std_id = m.id
		  ) ) a1
		LEFT JOIN
		(
		SELECT   ${tempHFields} from ${tableTempName} h
        LEFT JOIN maintain_detail md on md.pre_merge_id = h.id
        LEFT JOIN maintain m on m.id = md.parent_id
        INNER JOIN (
        SELECT max(m.order_no) as order_no, mt.std_id FROM ${tableTempName} mt
        LEFT JOIN maintain_detail md on md.pre_merge_id = mt.id
        LEFT JOIN maintain m on m.id = md.parent_id
        WHERE m.order_no <= ${fromOrderNo} and m.order_no > ${toOrderNo}
        and  m.table_name = '${tableName}'
        and operate = 'update'
        GROUP BY mt.std_id
        ) a on a.order_no = m.order_no and a.std_id = h.std_id
		)a2 on a1.id = a2.id WHERE  a2.id is null
        UNION
        SELECT
         ${A2fields}, 'update' as operate, a2.status as status
        from (
        SELECT ${fields} from ${tableName} m
        ) a1
		LEFT JOIN
		(
		SELECT   ${tempHFields}, f.status from ${tableTempName} h
        LEFT JOIN maintain_detail md on md.pre_merge_id = h.id
        LEFT JOIN maintain m on m.id = md.parent_id
        LEFT JOIN flows f on m.flow_id = f.id
        INNER JOIN (
        SELECT max(m.order_no) as order_no, mt.std_id FROM ${tableTempName} mt
        LEFT JOIN maintain_detail md on md.pre_merge_id = mt.id
        LEFT JOIN maintain m on m.id = md.parent_id
        WHERE m.order_no <= ${fromOrderNo} and m.order_no > ${toOrderNo}
        and  m.table_name = '${tableName}'
        and operate = 'update'
        GROUP BY mt.std_id
        ) a on a.order_no = m.order_no and a.std_id = h.std_id
		)a2 on a1.id = a2.id WHERE  a2.id is not null
		UNION
		SELECT ${tempFields}, 'create' as operate, f.status as status FROM maintain_detail md
        LEFT JOIN maintain ON maintain.id = md.parent_id
        LEFT JOIN flows f on maintain.flow_id = f.id
        LEFT JOIN ${tableTempName} mt on mt.id = md.pre_merge_id
        WHERE maintain.order_no <= ${fromOrderNo} and maintain.order_no > ${toOrderNo}
        AND   maintain.table_name = '${tableName}'
        AND operate = 'create'
        AND NOT EXISTS (
            SELECT * FROM maintain_detail
            LEFT JOIN maintain ON maintain.id = maintain_detail.parent_id
            LEFT JOIN ${tableTempName} mt1 on mt1.id = maintain_detail.pre_merge_id
            WHERE  maintain.order_no <= ${fromOrderNo} and maintain.order_no > ${toOrderNo}
            AND operate = 'delete'
            AND mt.std_id = mt1.std_id
            AND   maintain.table_name = '${tableName}'
        )
        UNION
		SELECT ${tempFields}, 'delete' as operate, f.status as status FROM maintain_detail md
        LEFT JOIN maintain ON maintain.id = md.parent_id
        LEFT JOIN flows f on maintain.flow_id = f.id
        LEFT JOIN ${tableTempName} mt on mt.id = md.pre_merge_id
        WHERE maintain.order_no <= ${fromOrderNo} and maintain.order_no > ${toOrderNo}
         AND   maintain.table_name = '${tableName}'
         AND operate = 'delete'
        AND NOT EXISTS (
            SELECT * FROM maintain_detail
            LEFT JOIN maintain ON maintain.id = maintain_detail.parent_id
            LEFT JOIN ${tableTempName} mt1 on mt1.id = maintain_detail.pre_merge_id
            WHERE  maintain.order_no <= ${fromOrderNo} and maintain.order_no > ${toOrderNo}
            AND operate = 'create'
            AND mt.std_id = mt1.std_id
            and  maintain.table_name = '${tableName}'
        )
        )a where  ${where}
         ]]>
    </select>

    <insert id="insert"  statementType="STATEMENT" >
       INSERT INTO ${tableName} (${fields}) VALUES ${values}
    </insert>

    <update id="update">
       update  ${tableName} set ${updateSegment}
       where ${where}
    </update>

    <delete id="delete">
        DELETE FROM ${tableName} where ${where}
    </delete>

    <delete id="deleteTempByMaintainId">
        DELETE FROM ${tableTempName}  where EXISTS (
        SELECT pre_merge_id from maintain_detail d
        where parent_id = ${maintainId} and d.pre_merge_id = ${tableTempName}.id
        )
    </delete>

    <!-- temp 2 standrad-->
    <insert id="tempCreate2std" statementType="STATEMENT"  >
        INSERT INTO ${tableName}
        SELECT
        ${tempFields}
         from ${tableTempName} t
         where
         EXISTS
        (
        SELECT  std_id from ${tableTempName} tm
        LEFT JOIN maintain_detail on tm.id = maintain_detail.pre_merge_id
        WHERE maintain_detail.parent_id = ${maintainId}
        and operate = 'create'
        and tm.id = t.id
        )
    </insert>

    <select id="getTempIdByStdId" statementType="STATEMENT" resultType="java.lang.String">
      SELECT  tm.id from ${tableTempName} tm
      inner JOIN maintain_detail md on md.pre_merge_id = tm.id
      where tm.std_id = ${stdId} and md.parent_id = ${maintainId}

    </select>

    <insert id="insertMatintainDetailFromTemp" statementType="STATEMENT" >

        INSERT INTO maintain_detail
        SELECT md5(uuid()) as id, ${maintainId} as parent_id, ${operate} as operate, id as pre_merge_id, NOW() as create_time
        from ${tableTempName}  m WHERE m.deal = 0

    </insert>

    <insert id="insertMatintainDetailFromStandrad" statementType="STATEMENT" >

        INSERT INTO maintain_detail
        SELECT md5(uuid()) as id, ${maintainId} as parent_id, 'delete' as operate, id as pre_merge_id, NOW() as create_time
        from ${tableTempName}  m WHERE m.deal = 0

    </insert>

    <update id="updateStdId" statementType="STATEMENT" >

        update ${tableTempName}
        set std_id = md5(uuid()) WHERE deal = 0

    </update>

    <insert id="insertRecordFromStandrad" statementType="STATEMENT" >
         INSERT INTO ${recordTableName}
        SELECT ${tempFieldList}, 0 as deal
        from  ${tableName}

    </insert>

    <select id="tempByOperate" statementType="STATEMENT" resultType="java.util.Map">
        SELECT
        ${fields}
        from ${tableTempName} t
        where
        EXISTS
        (
        SELECT  pre_merge_id from maintain_detail
        LEFT JOIN maintain on maintain.id = maintain_detail.parent_id
        WHERE maintain.id = ${maintainId}
        and operate = ${operate}
        and maintain_detail.pre_merge_id = t.id
        )
    </select>

    <update id="updateRecordByMaintainId" statementType="STATEMENT" >
         update ${tableTempName}
        INNER JOIN maintain_detail on ${tableTempName}.id = maintain_detail.pre_merge_id
        set ${updateSegment}
        WHERE maintain_detail.parent_id = ${maintainId}

    </update>

    <delete id="deleteRecordByMaintainId" statementType="STATEMENT" >
        DELETE  ${tableTempName} from  ${tableTempName}
        INNER JOIN maintain_detail on maintain_detail.pre_merge_id =  ${tableTempName}.id
        WHERE maintain_detail.parent_id = ${maintainId} and  ${tableTempName}.std_id = ${stdId}
    </delete>

    <select id="selectActMemberShip" parameterType="java.util.Map" resultType="java.util.Map">
        select * from act_id_membership where USER_ID_ = #{userId} and GROUP_ID_ = #{roleId}
    </select>

    <select id="getOneTempFieldDataByMaintainExtent" statementType="STATEMENT"   resultType="java.util.Map">
         <![CDATA[
        SELECT DISTINCT ${field} FROM  ${tempTableName} t  WHERE  EXISTS (
          SELECT pre_merge_id  FROM ( SELECT  pre_merge_id FROM  maintain_detail  WHERE EXISTS (
            SELECT  id  FROM  ( SELECT  id  FROM  `maintain`  WHERE
              table_name = ${tableName}
              AND order_no >= ${fromOrderNo}
              AND order_no <  ${toOrderNo}
              ) a
            WHERE
            a.id = maintain_detail.parent_id  )
          ) a
        WHERE t.id = a.pre_merge_id)

        ]]>
    </select>

    <select id="getTempDataByMaintainExtent" statementType="STATEMENT"   resultType="java.util.Map">
        <![CDATA[
        SELECT *  FROM  ${tempTableName} t  WHERE  EXISTS (
          SELECT pre_merge_id  FROM ( SELECT  pre_merge_id FROM  maintain_detail  WHERE EXISTS (
            SELECT  id  FROM  ( SELECT  id  FROM  `maintain`  WHERE
              table_name = ${tableName}
              AND order_no >= ${fromOrderNo}
              AND order_no <  ${toOrderNo}
              ) a
            WHERE
            a.id = maintain_detail.parent_id  )
          ) a
        WHERE t.id = a.pre_merge_id)

        ]]>
    </select>
</mapper>