这是一条基于事务的插入语句,现在我有一个C表,表中只有 '问题标题'和'问题答案' 两个字段。怎么把C表的数据插入到上述的两张表?注意ask_answers的question_id必须与ask_questions的主键id对应内容:

假设C表的字段名分别为question_title和answer_content,可以使用以下语句将C表数据插入到ask_questions和ask_answers表中:

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 
    question_title, @question_id, 1007, answer_content, 1, NULL, NOW(), NOW()
FROM C
JOIN ask_questions ON C.question_title = ask_questions.title;

COMMIT;

这条语句使用了SELECT子句,将C表的数据选择出来,并插入到ask_questions和ask_answers表中。JOIN语句将ask_questions表和C表连接起来,通过question_title字段进行匹配,确保ask_answers表中的question_id与ask_questions表中的id对应。同时,使用LAST_INSERT_ID()函数获取ask_questions表中最后插入的主键id,将其存储在@question_id变量中,供插入ask_answers表时使用。最后,使用事务包裹整个插入过程,确保数据的完整性。

将数据从C表插入到ask_questions和ask_answers表 - SQL事务示例

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

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