把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>