MySQL: Jak překopírovat/přesunout řádky do jiné tabulky?
Možná jste někdy narazili na potřebu v rámci jedné databáze překopírovat řádky z jedné tabulky do tabulky druhé. Nabízí se obstrukční řešení, kde získáme pomocí SELECT všechny položky, poté výsledky proženeme skrz while cyklus a mysql_fetch_array, a v každém průchodu cyklu provést INSERT. Případně si takový INSERT „poskládat“ a provést jen jednou; zde ale pozor na případný limit ve velikosti dotazu.
Takový způsob by byl samozřejmě zdlouhavý a chybný. Existuje naprosto jednoduché a elegantní řešení.
Jak překopírovat položky (řádky) do jiné tabulky?
INSERT `tab2`
SELECT *
FROM `tab1`
WHERE `
id`>3
Asi není potřeba příliš obsáhlý komentář. Získají se všechna data z tabulky tab1, která mají id větší jak 3. Tato data data se zapíší do tabulky tab2.
Přesun položek (řádků) do jiné tabulky
Pokud je potřeba data přesunout, je nutné po zavolání výše uvedeného dotazu data z první tabulky smazat. Lze to udělat následovně:
DELETE
FROM `tab`
WHERE `id`>3
Kompletní SQL dotaz včetně transakce
START TRANSACTION;
INSERT `tab2`
SELECT *
FROM `tab`
WHERE`
id`>3;
DELETE
FROM `tab`
WHERE`
id`>3;
COMMIT;
Comments ( 2 )