sql >> データベース >  >> RDS >> Mysql

あるMySQLテーブルから別のテーブルにデータを移動する

    まず、括弧が1つ欠けていますが、この場合はまったく使用する必要がありません

    クエリ文字列を

    に変更します
    Insert Into archived (select * from registrations WHERE id=$id)
                         ^                                        ^
    

    または単に

    Insert Into archived select * from registrations WHERE id=$id
    

    これがSQLFiddle です。 デモ

    次に、INSERT 結果セットを返さないため、mysql_fetch_array()を使用しないでください。 。

    第三に、あなたの意図が移動であった場合 データをコピーするだけでなく、後でコピーした行も削除する必要があります。

    これで、すべてをストアドプロシージャに入れることができます

    DELIMITER $$
    CREATE PROCEDURE move_to_archive(IN _id INT)
    BEGIN
        START TRANSACTION;
        INSERT INTO archived 
        SELECT * 
          FROM registrations 
         WHERE id = _id;
        DELETE
          FROM registrations 
         WHERE id = _id;
        COMMIT;
    END$$
    DELIMITER ;
    

    使用例:

    CALL move_to_archive(2);
    

    これがSQLFiddle です。 デモ



    1. OracleIF条件の例

    2. GlassfishからJDBC接続プールに接続できません

    3. 週ごとに最近参加したレコードを集計する

    4. キーワード名の列を選択してください