0

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がどのように機能するかはわかりません。どんな助けでもいただければ幸いです

4

1 に答える 1

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

等々...

于 2011-11-29T16:15:55.103 に答える