Вставить строки в другую таблицу в MYSQL - PullRequest
0 голосов
/ 29 ноября 2011

Я пытаюсь переназначить некоторые данные в моей базе данных 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 голосов
/ 29 ноября 2011

Если вы хотите, и если вам нужно скопировать много данных, вы можете использовать этот подход:

Создайте хранимую процедуру, которая будет выполнять вставку данных для вас:

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

Затем выполните его с параметрами для идентификатора тега и идентификатора категории записей, которые вы хотите скопировать:

CALL Copy_From_Category_Article_To_Article_Tag(3, '7');

Приведенный выше оператор можно выполнить несколько раз в порядке, если вы предпочитаете:1009 *

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

И так далее ...

...