我需要一个脚本插入到关系表中。例如,此关系表具有表A
中的一个ID列。我们添加了一个新列,即表B
中的ID。
INSERT INTO A SELECT...
,B
和A id
中的每一行都有B id
的方式吗?
我正在尝试使用存储过程(这不起作用),但如果您有任何其他建议,请随意。
DELIMITER $$
CREATE PROCEDURE fixNewIDColumn()
BEGIN
DECLARE a_id INT;
DECLARE b_id INT;
DECLARE finished_a BOOL DEFAULT FALSE;
DECLARE finished_b BOOL DEFAULT FALSE;
DECLARE a_cursor CURSOR FOR SELECT id FROM a;
DECLARE b_cursor CURSOR FOR SELECT id FROM b;
OPEN a_cursor;
BEGIN
DECLARE CONTINUE HANDLER FOR NOT FOUND SET finished_a = TRUE;
a_loop: LOOP
FETCH a_cursor INTO a_id;
IF finished_a THEN
LEAVE a_loop;
END IF;
OPEN b_cursor;
BEGIN
DECLARE CONTINUE HANDLER FOR NOT FOUND SET finished_b = TRUE;
b_loop: LOOP
FETCH b_cursor INTO b_id;
IF finished_b THEN
SET finished_a = FALSE;
LEAVE b_loop;
END IF;
INSERT INTO a VALUES (a_id, b_id);
END LOOP b_loop;
CLOSE b_cursor;
END;
END LOOP a_loop;
CLOSE a_cursor;
END;
END
答案 0 :(得分:1)
试试这个
INSERT INTO A(id)
SELECT id
FROM B
尝试使用CROSS JOIN
INSERT INTO A(a_id, b_id)
SELECT a.a_id, b.b_id
FROM TableA a
CROSS JOIN TableB b