Brugerid 27 fremgår 3 gange. Hvordan fjerner jeg de 2 andre, således jeg beholder det brugerid, hvor listenr er lavest. Altså jeg ønsker at beholde postid. nr. 16.
Der kan i øvrigt ikke forekomme flere poster med ens brugerid, og hvor listenr er ens.
Ehh, kunne ikke lave det i en query, og tror faktisk ikke det er muligt, når du gerne vil bibeholde laveste listenr.
$usql = "SELECT bruger, MIN(listenr) as nr, COUNT(*) as antal FROM tabel GROUP BY bruger HAVING antal > 1"; $rows = mysql_query($usql) or die (mysql_error());
if(mysql_num_rows($rows) > 0) {
while($b = mysql_fetch_object($rows)) { $del = "DELETE FROM tabel WHERE bruger = ".$b->bruger." AND listenr != ".$b->nr; mysql_query($del) or die (mysql_error());
echo"<br>Slettet ".mysql_affected_rows()." rows for brugerid ".$b->bruger; }
Ja, det ser ud til at vaere problematisk i MYSQL at slette raekker i en tabel baseret paa kriteria i den samme tabel (men det kan vaere paa grund af mit niveau med MYSQL.) Men man kan kopiere de rigtige raekker (de med unikke brugerids og de med minimum listnr hvor der er duplikat brugerid) over i en ny tabel med "INSERT INTO .... SELECT...."
Jeg lavede en tabel nemlig2 med nedenstaaende raekker og en tom tabel nemlig3 med de samme kolonner. Med denne query fik jeg de rigtige raekker kopieret over:
INSERT INTO nemlig3 SELECT * FROM nemlig2 WHERE listnr IN ( SELECT MIN(listnr) FROM nemlig2 GROUP BY brugerid HAVING COUNT(*) > 1 UNION SELECT listnr FROM nemlig2 GROUP BY brugerid HAVING COUNT(*) = 1);
Showsource - du kom først med en løsningen, og som jeg arbejdede videre med. Det virker perfekt. Send venligst et svar. Christian_belgien: Tak for dit bidrag, men jeg giver pointene til Showsource, da det endte med hans løsning.
Ehh, lige en ting: I stedet for at afvikle en query for hvert fundne row, kan det samles til en:
$usql = "SELECT bruger, MIN(listenr) as nr, COUNT(*) as antal FROM tabel GROUP BY bruger HAVING antal > 1"; $rows = mysql_query($usql) or die (mysql_error());
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.