Avatar billede subcubes Nybegynder
03. september 2001 - 08:24 Der er 7 kommentarer og
1 løsning

Fjern dubletter

Hej - jeg har en database, med små 18000 telefon numre.
Problemet er bare at de 10000 af dem er dubletter.

Hvordan ser et script ud, der finder alle disse dubletter og derefter fjerner den ene af dem ?
Avatar billede htx98i17 Professor
03. september 2001 - 08:25 #1
SELECT * FROM telefon GROUP BY tlfnr
Avatar billede htx98i17 Professor
03. september 2001 - 08:26 #2
hvis det er i et udtræk...

men vil du have slettet dubletterne helt fra databasen?
Avatar billede subcubes Nybegynder
03. september 2001 - 08:28 #3
Vil have slettet dem helt fra databasen
Avatar billede myplacedk Nybegynder
03. september 2001 - 09:04 #4
Hvorfor spørger du om det under PHP?
Database-eksperne er samlet under \"database\" (eller \"sql\", eller hvad den nu hedder)
Avatar billede binderup Nybegynder
03. september 2001 - 10:43 #5
http://www.bitbybit.dk/mysqlfaq/comments.html#ch7_8_0

Denne lille vejledning kan du afvikle (evt via phpMyadmin).
Avatar billede coderdk Praktikant
03. september 2001 - 10:44 #6
$sql = \"SELECT a.ID, b.ID as DUP_ID FROM tabel a, tabel b WHERE a.TlfNr = b.TlfNr AND a.ID != b.ID\";
$query = mysql_query($sql);
while ($row = mysql_fetch_array($query))
  $dups[] = $row[\"DUP_ID\"];
mysql_free_result($query);

$dups = implode(\",\",$dups);
if (strlen($dups) > 0)
{
  $sql = \"DELETE FROM tabel WHERE ID IN ($dups)\";
  $query = mysql_query($sql);
  mysql_free_result($q2);
}
Avatar billede coderdk Praktikant
03. september 2001 - 10:46 #7
den sidste mysql_free_result skulle jo være med $query og ikke $q2

Her er et alternativ:

$sql = \"SELECT a.ID, b.ID as DUP_ID FROM tabel a, tabel b WHERE a.TlfNr = b.TlfNr AND a.ID != b.ID\";
$query = mysql_query($sql);
while ($row = mysql_fetch_array($query))
{
  $sql = \"DELETE FROM tabel WHERE ID = $row[DUP_ID]\";
  $q2 = mysql_query($sql);
  mysql_free_result($q2);
}
mysql_free_result($query);
Avatar billede subcubes Nybegynder
16. september 2001 - 13:13 #8
Har brugt denne metode:

$query = mysql_query(\"SELECT id FROM data GROUP BY telefon1\");

$notin = \"0\";

while ($row = mysql_fetch_array($query)) {
    $notin .= \",\".$row[id];
}

mysql_query(\"DELETE FROM data WHERE id NOT IN ($notin)\");
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester