mysql 批量複製

 

把oldId(舊課程id)裏面的多條學生數據複製到newId (新課程id)裏面  

  INSERT INTO source_group (
        NAME,student_Id,COURSE_ID,STUDENT_NAME,STATUS,teacher_Id,
        )
        SELECT
        NAME,student_Id,pt2,STUDENT_NAME,CASE WHEN STATUS = '10F' THEN '10S' ELSE STATUS END STATUS
        FROM source_group
        INNER JOIN (
        SELECT oldId pt1, newId pt2
        ) a2 ON course_id = pt1  ORDER BY id

當不止複製一個課程時 可以採用union all的方式複製 

  INSERT INTO source_group (
        NAME,student_Id,COURSE_ID,STUDENT_NAME,STATUS,teacher_Id,
        )
        SELECT
        NAME,student_Id,pt2,STUDENT_NAME,STATUS
        FROM source_group
        INNER JOIN (
        SELECT oldId pt1, newId pt2
        union all 
        SELECT oldId1 pt1, newId2 pt2
        ) a2 ON course_id = pt1  ORDER BY id

//mybatis文件
 <insert id="copySourceGroup" parameterType="com.vo.CopyDto">
  INSERT INTO source_group (
        NAME,student_Id,COURSE_ID,STUDENT_NAME,STATUS,teacher_Id,
        )
        SELECT
        NAME,student_Id,pt2,STUDENT_NAME,CASE WHEN STATUS = '10F' THEN '10S' ELSE STATUS END STATUS
        FROM source_group
         <foreach collection="list" item="copyItem" separator=" UNION ALL ">
            SELECT #{copyItem.oldId} pt1, #{copyItem.newId} pt2
        </foreach>
        ) a2 ON course_id = pt1  ORDER BY id
  </insert>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章