在MYSQL中将行插入到不同的表中

时间:2011-11-29 15:41:56

标签: mysql database insert insert-select

我正在尝试重新映射我的mysql数据库中的一些数据。

我想将名为category_article的表格中的内容移至另一个名为article_tag的表格。

我想移动一个字段(article_id)并为tag_id添加我自己的数据。

我目前有:

INSERT INTO article_tags (tag_id, article_id)
SELECT 3, article_id
FROM category_article
WHERE category_id = '7';

显然我知道'3'在这种情况下是错误的,所以也许我需要将它设置为变量?

我不确定mysql如何适用于这样的事情。任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

如果你愿意,如果你需要复制大量数据,你可以使用这种方法:

创建一个存储过程,为您执行数据插入:

CREATE PROCEDURE `Copy_From_Category_Article_To_Article_Tag`
(
      IN prm_tagid INT
    , IN prm_category_id VARCHAR(10)
)
BEGIN
    INSERT INTO article_tags (tag_id, article_id)
    SELECT prm_tagid, article_id
    FROM category_article
    WHERE category_id = prm_category_id;
END

然后使用标签ID的参数和要复制的记录的类别ID执行它:

CALL Copy_From_Category_Article_To_Article_Tag(3, '7');

如果您愿意,可以按顺序执行上述语句:

CALL Copy_From_Category_Article_To_Article_Tag(3, '7'); -- copy category 7 to tag 3
CALL Copy_From_Category_Article_To_Article_Tag(5, '1'); -- copy category 1 to tag 5
CALL Copy_From_Category_Article_To_Article_Tag(9, '4'); -- copy category 4 to tag 9

等等......