Zdravím. Při vývoji jednoho projektu jsem se dopustil řady chyb v kódu, vohužel nejkrytičtější je právě v DB (kde se těžko opravuje). Bohužel se mi podařilo nahárt mnoho duplicictních hodnot. Potřeboval bych, aby se smazali všechny duplicitní hodnoty s vyšším ID, jak originál (originál má nižší ID, v případě existence duplikátu mají duplikáty ID zpravidla o jedno až n vyšší). Existuje pro to příkaz? Nebo si to musím sám sestavit přes PHP? Děkuji.
Fórum › MySQL
Smazání duplicitních záznamů
survik1
Existuje pro to příkaz? Nebo si to musím sám sestavit přes PHP?
-- uděláme si kopii
CREATE TABLE tabulka_kopie LIKE tabulka;
-- přidáme unique index, aby se vyfiltrovala duplikátní data
ALTER TABLE tabulka_kopie ADD UNIQUE muj_unique_index (moje, unikatni, sloupce);
-- přelijeme data do nově vytvořené tabulky
INSERT IGNORE INTO tabulka_kopie SELECT * FROM tabulka;
-- volitelně: odstraníme unique index
ALTER TABLE tabulka_kopie DROP INDEX muj_unique_index;
-- „přelijeme“ data zpátky
DROP TABLE tabulka;
ALTER TABLE tabulka_kopie RENAME TO tabulka;
Zjistit počet nových příspěvků
Přidej příspěvek
Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
Uživatelé prohlížející si toto vlákno
Uživatelé on-line: 0 registrovaných, 12 hostů
Podobná vlákna
Smazání záznamu php+mysql — založil prema
Smazani nekolika zaznamu z velke databaze — založil lojza
Javascript předání ID záznamu pro smazání — založil fix
Vyskakovací okno při pokusu o neautorizované smazání záznamu — založil doonio
Access-SQL: vypis duplicitnich hodnot — založil evzen
Moderátoři diskuze