sql >> Databáze >  >> RDS >> Mysql

Přesuňte data z jedné tabulky MySQL do druhé

Za prvé vám chybí jedna závorka, kterou v tomto případě vůbec nemusíte používat

Změňte řetězec dotazu na

Insert Into archived (select * from registrations WHERE id=$id)
                     ^                                        ^

nebo jen

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

Zde je SQLFiddle demo

Za druhé INSERT nevrací sadu výsledků, takže byste neměli používat mysql_fetch_array() .

Za třetí, pokud bylo vaším záměrem přesunout se nejen pro kopírování dat, ale také musíte odstranit řádek, který jste zkopírovali později.

Nyní můžete vše vložit do uložené procedury

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 ;

Ukázkové použití:

CALL move_to_archive(2);

Zde je SQLFiddle demo



  1. MYSQL:Volné / obsazené místnosti jako nyní

  2. Použití jako zástupný znak v připraveném příkazu

  3. Laravel LeftPřipoj se kam

  4. Chyba při odesílání výstupu dotazu mysql do souboru csv