Autor | Zpráva | ||
---|---|---|---|
Prefin Profil |
#1 · Zasláno: 11. 5. 2012, 09:48:11 · Upravil/a: Prefin
Ahojda.
Prosím o radu s tímhle malým problémem. Udělal jsem si takovou fci na odstraňování duplicitních záznamů z libovolné tabulky: // Funkce na odstranění duplicitních záznamů v databázi function OdstranDuplicityDb($tabulka,$sloupec) { $nova_tabulka = $tabulka."_zal"; $sql[0] = "CREATE TABLE `".$nova_tabulka."` LIKE `".$tabulka."`"; $sql[1] = "ALTER TABLE `".$nova_tabulka."` ADD UNIQUE (`".$sloupec."`)"; $sql[2] = "INSERT IGNORE `".$nova_tabulka."` SELECT * FROM `".$tabulka."`"; $sql[3] = "DROP TABLE `".$tabulka."`"; $sql[4] = "RENAME TABLE `".$nova_tabulka."` TO `".$tabulka."`"; $sql[5] = "ALTER TABLE `".$tabulka."` DROP INDEX `".$sloupec."`"; for($i=0;$i<=5;$i++) { echo $sql[$i]."<br>"; if(mysql_query($sql[$i])) { $kontrola .= "$i krok OK<br>"; } else {$kontrola .= "$i krok se nezdařil<br>";} } return $kontrola; } V tabulce index UNIQUE prostě zůstane a přiznám se že nevím proč,protože když ten příkaz zadám přímo v phpmyadminu tak se index odstraní. Tady je echo $sql: CREATE TABLE `poptavka_zal` LIKE `poptavka` ALTER TABLE `poptavka_zal` ADD UNIQUE (`kod_poptavka`) INSERT IGNORE `poptavka_zal` SELECT * FROM `poptavka` DROP TABLE `poptavka` RENAME TABLE `poptavka_zal` TO `poptavka` ALTER TABLE `poptavka` DROP INDEX `kod_poptavka` Jo je to v krocích kvůli zachycení chyb, přemýšlím jak to ještě zkrátit a zjednodušit jestli je to možný. Díkas Prefin: Už jsem přišel na chybu a ta je mezi židlí a klávesnicí. Těch indexů tam bylo víc (nějak se tam dostaly asi při postupném zkoušení id_poptavka_2 ...) a index se tedy odebral ale ještě tam zbyl jiný. |
||
Kajman Profil |
Existuje i alter ignore viz.
Některé časteji řešené dotazy pro MySQL - FAQ » Odstranění duplicit |
||
Časová prodleva: 12 let
|
0