将C表数据插入ask_questions和ask_answers表

本文介绍了如何使用 MySQL 事务将 C 表的数据插入到 ask_questionsask_answers 表中,并确保 ask_answers 表的 question_id 字段与 ask_questions 表的主键 id 一一对应。

假设 C 表的字段名分别为 question_titleanswer_content,可以使用以下语句将 C 表的数据插入到两张表中:

START TRANSACTION;

INSERT INTO ask_questions (user_id, category_id, title, description, price, hide, answers , status, created_at, updated_at)
SELECT 1, 7, question_title, question_title, 1, 1, 1, 1, NOW(), NOW() 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 C.question_title, Q.id, 1007, C.answer_content, 1, NULL, NOW(), NOW() 
FROM C 
JOIN ask_questions Q ON Q.title = C.question_title;

COMMIT;

解释:

  1. START TRANSACTION; 开始事务,保证数据的一致性。

  2. INSERT INTO ask_questions ... SELECT ... FROM C; 使用 SELECT 语句将 C 表的数据转换成了需要插入的格式,并将数据插入到 ask_questions 表中。

  3. SET @question_id = LAST_INSERT_ID(); 获取 ask_questions 表中最后插入的 id,存储在变量 @question_id 中。

  4. INSERT INTO ask_answers ... SELECT ... FROM C JOIN ask_questions Q ON Q.title = C.question_title; 使用 JOIN 语句将 C 表和 ask_questions 表关联起来,并将数据插入到 ask_answers 表中。question_id 字段的值来自于 ask_questions 表的 id 列,保证了一一对应关系。

  5. COMMIT; 提交事务,完成数据插入操作。

注意:

  • 以上代码假设 ask_questions 表的主键列名为 id
  • 确保 C 表的 question_title 字段与 ask_questions 表的 title 字段匹配。
  • 可以根据需要调整 SQL 语句中其他字段的值。

通过以上步骤,您可以将 C 表的数据成功插入到 ask_questionsask_answers 表中,并保证 question_id 字段的一一对应关系。

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

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

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