106 lines
3.0 KiB
MySQL
106 lines
3.0 KiB
MySQL
|
|
-- 修复题目格式问题
|
|||
|
|
-- 问题:选项和答案包含 "A. " 前缀,导致答案判断失败
|
|||
|
|
|
|||
|
|
-- ==========================================
|
|||
|
|
-- 1. 查看有问题的题目
|
|||
|
|
-- ==========================================
|
|||
|
|
SELECT
|
|||
|
|
id,
|
|||
|
|
question_type,
|
|||
|
|
question_content,
|
|||
|
|
options,
|
|||
|
|
correct_answer,
|
|||
|
|
exam_id
|
|||
|
|
FROM study_question
|
|||
|
|
WHERE
|
|||
|
|
-- 选项包含 "A. " 前缀的
|
|||
|
|
options LIKE '%"A. %'
|
|||
|
|
OR options LIKE '%"B. %'
|
|||
|
|
OR options LIKE '%"C. %'
|
|||
|
|
-- 或正确答案包含前缀的
|
|||
|
|
OR (question_type = 'single' AND correct_answer LIKE '%. %')
|
|||
|
|
ORDER BY exam_id, id;
|
|||
|
|
|
|||
|
|
-- ==========================================
|
|||
|
|
-- 2. 手动修复示例(替换你的题目ID和内容)
|
|||
|
|
-- ==========================================
|
|||
|
|
|
|||
|
|
-- 修复单选题(去除选项和答案的前缀)
|
|||
|
|
-- 示例:
|
|||
|
|
-- UPDATE study_question
|
|||
|
|
-- SET
|
|||
|
|
-- options = '["选项内容1","选项内容2","选项内容3"]', -- 去除 "A. "、"B. " 等前缀
|
|||
|
|
-- correct_answer = 'A' -- 只保留字母
|
|||
|
|
-- WHERE id = {题目ID};
|
|||
|
|
|
|||
|
|
-- ==========================================
|
|||
|
|
-- 3. 批量修复脚本(谨慎使用!先备份!)
|
|||
|
|
-- ==========================================
|
|||
|
|
|
|||
|
|
-- 备份表
|
|||
|
|
-- CREATE TABLE study_question_backup AS SELECT * FROM study_question;
|
|||
|
|
|
|||
|
|
-- 注意:以下脚本需要根据实际数据调整,建议一条一条手动执行
|
|||
|
|
|
|||
|
|
-- 修复考试14的题目(根据你的实际情况修改)
|
|||
|
|
-- 题目149
|
|||
|
|
UPDATE study_question
|
|||
|
|
SET
|
|||
|
|
options = REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
|
|||
|
|
options,
|
|||
|
|
'"A. ', '"'),
|
|||
|
|
'"B. ', '"'),
|
|||
|
|
'"C. ', '"'),
|
|||
|
|
'"D. ', '"'),
|
|||
|
|
'"E. ', '"'),
|
|||
|
|
'"F. ', '"'),
|
|||
|
|
correct_answer = CASE
|
|||
|
|
WHEN correct_answer LIKE 'A. %' THEN 'A'
|
|||
|
|
WHEN correct_answer LIKE 'B. %' THEN 'B'
|
|||
|
|
WHEN correct_answer LIKE 'C. %' THEN 'C'
|
|||
|
|
WHEN correct_answer LIKE 'D. %' THEN 'D'
|
|||
|
|
WHEN correct_answer LIKE 'E. %' THEN 'E'
|
|||
|
|
WHEN correct_answer LIKE 'F. %' THEN 'F'
|
|||
|
|
ELSE correct_answer
|
|||
|
|
END
|
|||
|
|
WHERE exam_id = 14 AND question_type IN ('single', 'multiple');
|
|||
|
|
|
|||
|
|
-- ==========================================
|
|||
|
|
-- 4. 验证修复结果
|
|||
|
|
-- ==========================================
|
|||
|
|
SELECT
|
|||
|
|
id,
|
|||
|
|
question_type,
|
|||
|
|
question_content,
|
|||
|
|
options,
|
|||
|
|
correct_answer
|
|||
|
|
FROM study_question
|
|||
|
|
WHERE exam_id = 14
|
|||
|
|
ORDER BY id;
|
|||
|
|
|
|||
|
|
-- ==========================================
|
|||
|
|
-- 5. 检查学生答案是否也需要修复
|
|||
|
|
-- ==========================================
|
|||
|
|
SELECT
|
|||
|
|
sa.id,
|
|||
|
|
sa.question_id,
|
|||
|
|
sa.student_answer,
|
|||
|
|
sa.is_correct,
|
|||
|
|
q.correct_answer,
|
|||
|
|
q.question_type
|
|||
|
|
FROM study_student_answer sa
|
|||
|
|
JOIN study_question q ON sa.question_id = q.id
|
|||
|
|
WHERE sa.exam_id = 14
|
|||
|
|
ORDER BY sa.student_id, sa.question_id;
|
|||
|
|
|
|||
|
|
-- 如果学生答案也包含前缀,也需要修复
|
|||
|
|
-- UPDATE study_student_answer
|
|||
|
|
-- SET student_answer = CASE
|
|||
|
|
-- WHEN student_answer LIKE 'A. %' THEN 'A'
|
|||
|
|
-- WHEN student_answer LIKE 'B. %' THEN 'B'
|
|||
|
|
-- WHEN student_answer LIKE 'C. %' THEN 'C'
|
|||
|
|
-- WHEN student_answer LIKE 'D. %' THEN 'D'
|
|||
|
|
-- ELSE student_answer
|
|||
|
|
-- END
|
|||
|
|
-- WHERE exam_id = 14;
|