INSERT INTO base_class_course (class_id, course_id, textbook_id, create_date, delete_mark, enabled_mark)
VALUES (#{classId}, #{courseId}, #{textbookId},now(),0,1)
ON DUPLICATE KEY UPDATE
class_id = #{classId},
course_id = #{courseId},
textbook_id = #{textbookId}
UPDATE base_class_course
SET delete_mark = 1
WHERE class_id = #{classId}
AND course_id = #{courseId}
AND textbook_id = #{textbookId}
UPDATE base_class_course
SET delete_mark = 1
WHERE class_id = #{newClassId} AND (course_id IS NULL OR textbook_id IS NULL)
INSERT INTO base_class_course (class_id, course_id, textbook_id, create_date, delete_mark,enabled_mark)
SELECT #{newClassId}, t.course_id, t.textbook_id, now(), 0, 1
FROM (
SELECT course_id, textbook_id
FROM base_class_course
WHERE class_id = #{sourceClassId}
AND delete_mark = 0
GROUP BY course_id, textbook_id
) t
ON DUPLICATE KEY UPDATE delete_mark = 0