106 lines
3.0 KiB
SQL
106 lines
3.0 KiB
SQL
-- 修复题目格式问题
|
||
-- 问题:选项和答案包含 "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;
|