Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 多次插入到同一个表中_Mysql_Mariadb - Fatal编程技术网

Mysql 多次插入到同一个表中

Mysql 多次插入到同一个表中,mysql,mariadb,Mysql,Mariadb,我需要一个脚本插入到关系表中。例如,此关系表具有表A中的一个ID列。我们添加了一个新列,一个来自表B的ID 对于B中的每一行、a id和B id,是否有方法将插入到选择… 我正在尝试使用一个存储过程(它不起作用),但是如果您有任何其他建议,请尽管提 DELIMITER $$ CREATE PROCEDURE fixNewIDColumn() BEGIN DECLARE a_id INT; DECLARE b_id INT; DECLARE finished_a BO

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

对于
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
试试这个

INSERT INTO A(id)
SELECT id
FROM B
尝试使用
交叉连接

INSERT INTO A(a_id, b_id)
SELECT a.a_id, b.b_id
FROM TableA a
CROSS JOIN TableB b

你想用光标做什么??为什么是光标??你就不能把
插入到从B中选择的A中吗
?@Eric和
A_id
?此
INSERT
无效。当然无效。这只是语法问题。您可以插入自己的列。我不知道你想要什么栏目。您不需要为tableA和tableB设置表结构。我怎么知道呢?我需要在表
A
中插入一个
A\u id
每个现有的
b\u id
它不工作。我需要提供一个
a_id
b_id
@Leonardo,它将b中的所有内容插入a中。什么意思是它不工作?想象一下表
a
有10条记录,只有
a_id
列。表
B
有20条记录。我在表
a
中创建了一个新列,即
b\u id
。因此,现在我需要建立关系,并为每个
a_id
添加表
b
@Leonardo So tablea结构中的所有20个
b_id
:表a(a_id,b_id),表b结构
表b(b_id)
。您想将
TableB.b_id
插入TableA.b_id`?结构是正确的,但对于每个不同的
TableA.a_id
插入
TableA