mysql - 多次插入同一个表

标签 mysql mariadb

我需要一个脚本来插入关系表。例如,该关系表有一个来自表 A 的 ID 列。我们添加了一个新列,即表 B 中的 ID。

有没有办法为B中的每一行INSERT INTO A SELECT...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

最佳答案

试试这个

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

关于mysql - 多次插入同一个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49394140/

相关文章:

php - 通过php导入excel文件到mysql数据库

php - Laravel - 哈希器/重置密码问题

Mysql Server : Unable to connect to remote host. 目录下载失败

mysql - 以下查询在创建表时出错

mysql - mariadb SQL 查询显示带有聚合值的汇总行

php简单登录脚本白页

php - PHP 中不区分大小写的查询不起作用

mysql - UTF-8字符有问题;我看到的不是我存储的

java - MariaDB 10.2,jdbcCompliantTruncation = false 不起作用

mariadb - 如何处理以前的 Flyway 迁移在较新的数据库版本中变得无效?