-- ============================================================================= -- questions 与 questions_tem 除 id 外结构一致时:从 tem 插入 questions -- -- 说明: -- · id 不拷贝,由 questions 自增。 -- · question_code 在 questions 上唯一:下面用新码避免与已有行冲突。 -- 若你确认 tem 的 question_code 与 questions 绝不重复,可把 SELECT 里第一列改成 t.question_code。 -- · 其余列与 tem 一一对应(结构完全一致时可直接照抄)。 -- · 去重:与业务一致,同 kp_code + stem 已在 questions 存在则跳过。 -- -- 执行前备份;建议先 START TRANSACTION,核对行数后再 COMMIT。 -- 需要 MySQL 8+(UUID())。 -- ============================================================================= START TRANSACTION; INSERT INTO `questions` ( `question_code`, `kp_id`, `textbook_catalog_nodes_id`, `stem`, `options`, `answer`, `solution`, `difficulty`, `question_category`, `source`, `tags`, `question_type`, `source_file_id`, `source_paper_id`, `paper_part_id`, `textbook_id`, `meta`, `created_at`, `updated_at`, `audit_status`, `audit_reason`, `title_1`, `title_2`, `title_3`, `create_by`, `kp_code`, `kp_name`, `kp_reference`, `grade`, `step_num`, `solution_temp`, `solution_temp2` ) SELECT CONCAT('QT', UPPER(SUBSTRING(REPLACE(UUID(), '-', ''), 1, 12))) AS `question_code`, t.`kp_id`, t.`textbook_catalog_nodes_id`, t.`stem`, t.`options`, t.`answer`, t.`solution`, t.`difficulty`, t.`question_category`, t.`source`, t.`tags`, t.`question_type`, t.`source_file_id`, t.`source_paper_id`, t.`paper_part_id`, t.`textbook_id`, t.`meta`, t.`created_at`, t.`updated_at`, t.`audit_status`, t.`audit_reason`, t.`title_1`, t.`title_2`, t.`title_3`, t.`create_by`, t.`kp_code`, t.`kp_name`, t.`kp_reference`, t.`grade`, t.`step_num`, t.`solution_temp`, t.`solution_temp2` FROM `questions_tem` AS t WHERE t.`kp_code` IS NOT NULL AND TRIM(t.`kp_code`) <> '' AND t.`stem` IS NOT NULL AND TRIM(t.`stem`) <> '' AND NOT EXISTS ( SELECT 1 FROM `questions` AS q WHERE q.`kp_code` = t.`kp_code` AND q.`stem` = t.`stem` ); COMMIT; -- ----------------------------------------------------------------------------- -- 若两表列名/顺序有出入,可先查出 questions 除 id 外的列名再改 INSERT/SELECT: -- SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS -- WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'questions' AND COLUMN_NAME <> 'id' -- ORDER BY ORDINAL_POSITION; -- ----------------------------------------------------------------------------- -- 仅复制部分 tem 行:在 WHERE 末尾增加 AND t.id IN (1,2,3);