16. oktober 2002 - 01:05Der er
5 kommentarer og 1 løsning
finde dubleanter i SQL
Hej. Jeg har en kundebase med 5000 kunder. Jeg ønsker at finde dem der har oprettet sig flere gange. Dog tør jeg ikke slette dubleanterne automatisk så jeg ønsker et recordset der viser der hvor f.eks email er den samme. Dette har jeg halvvejs formået, men jeg vil gerne have en Query der finder det samme som denne, bare unden GROUP BY fo jeg vil gerne se alle de records med den samme mail. Som det er nu ser jeg jo kun een. "SELECT *, Count(email) FROM kundebase GROUP BY email HAVING Count(email)>1 ORDER BY email"
Hos Computerworld it-jobbank er vi stolte af at fortsætte det gode partnerskab med folkene bag IT-DAY – efter vores mening Danmarks bedste karrieremesse for unge og erfarne it-kandidater.
Nestede select er desværre ikke understøttet før i v. 4.x
Den ene select skal vælge de aktuelle emails: SELECT email FROM kundebase GROUP BY email having COUNT(*)>1 - Den anden select skal vælge alle rækker fra den viste select.
Måske kan det lade sig gøre at lave en join med de to sætninger, men jeg fik det ikke til at virke.
Hov, fik ikke antal med: SELECT email, count(*) AS antal FROM kundebase GROUP BY email having COUNT(*)>1
Hvis det ikke kan lade sige gøre i en sætning, så kan du oprette resultatet af den første select som en tabel og efterfølgende hente de ønskede data med en join af kundebase og temptabel.
Nogle forslag til andre måder at gøre det på? Den du har lavet ovenfor viser jo kun en af hver dubleant, men det jeg gerne vil er at vise alle records, hvor der er ens emails, men ikke grouped.
Kan du ikke lave en midlertidig tabel, der indeholder alle de emailadresser, som lasse buck fandt i den første SELECT-sætning? Så kan du derefter finde alle de linier i din oprindelige tabel, hvor emailadresserne er i den midlertidige tabel (med et passende JOIN).
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.