mysql_query("SELECT ID, COUNT(*) AS total FROM members GROUP BY email")or die(mysql_error()); while blablabla { if $row[total] > 1 query(DELETE FROM members WHERE ID=$row[ID] LIMIT $row[total]-1) }
Men umidlebart kan jeg ikke lige gennemskue præcis hvad der sker.. Jeg tror den gør det jeg ønsker :) ??
den sletter antallet af rækker minus 1 fra de resultater der giver mere end 1 række
kommer dog an på hvor mange rækker der er for så kan den godt være lidt sløv i det men burde gøre det du eftersøger.
du kan også bare køre denne funktion en gang imellem og så bruge select distinct de steder du skal bruge et unikt resultat.
men måske skulle du kigge lidt på om det ikek var nemmere at undgå at der kommer duplikater i din tabel til at starte med evt. ved at bruge en unique nøgle og en insert into on duplicate update
$sql = "SELECT id FROM test GROUP BY userid, amount"; $rows = array(12, 19, 100, 4); // resultatet fra din forespørgsel er en liste af id'er
$sql = "DELETE FROM test WHERE id NOT IN (".implode(',',$rows).")";
Det er to queries, men det kunne desværre ikke laves i et, da du ellers ville lave både delete ud fra en subselect, hvilket MySQL ikke er glad for... :( delete from test where id not in (select id from test group by userid, amount);
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.