使用 INSERT INTO...SELECT 语句将 C 表的数据插入到上述的两张表中:

START TRANSACTION;

INSERT INTO ask_questions (user_id, category_id, title, description, price, hide, answers , status, created_at, updated_at)
SELECT user_id, category_id, question_title, question_desc, price, hide, answers , status, created_at, updated_at FROM C;

SET @question_id = LAST_INSERT_ID();

INSERT INTO ask_answers (question_title, question_id, user_id, content, status, adopted_at, created_at, updated_at)
SELECT question_title, @question_id, user_id, answer_content, status, adopted_at, created_at, updated_at FROM C;

COMMIT;

解释:

  1. START TRANSACTION;:开始一个事务,确保所有操作都成功完成或全部回滚。
  2. INSERT INTO ask_questions ... SELECT ... FROM C;:将 C 表中的数据插入到 ask_questions 表中。请确保 C 表的字段与 ask_questions 表的字段对应。
  3. SET @question_id = LAST_INSERT_ID();:获取上一次插入操作生成的 ID,用于在 ask_answers 表中关联问题 ID。
  4. INSERT INTO ask_answers ... SELECT ... FROM C;:将 C 表中的数据插入到 ask_answers 表中,同时将 @question_id 关联到每个答案。
  5. COMMIT;:提交事务,保存所有更改。

注意:

  • 确保 C 表中包含 question_titleanswer_content 字段,以便对应 ask_questions 表的 title 和 ask_answers 表的 content
  • 确保 C 表的字段类型与目标表字段类型匹配。
  • 此代码假设 C 表中每个问题只对应一个答案。如果一个问题对应多个答案,则需要修改代码以进行相应的循环处理。

此代码示例仅供参考,具体实现需要根据实际情况进行调整。

MySQL 事务插入数据:将数据从 C 表插入到 ask_questions 和 ask_answers 表

原文地址: https://www.cveoy.top/t/topic/lO2Z 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录