Avatar billede mercutio Nybegynder
29. februar 2004 - 20:05 Der er 7 kommentarer og
1 løsning

hvordan vælger jeg kun de rækker som har mere end et resultat af

Jeg har en tabel der er kommet dublikater i hvordan laver man et select hvor jeg kun vil have de rækker som er dublikater altså det her pseudo kode skrevet om til noget der virker "select * from tabel where nølge findes mere end en gang"

Eksempel tabel
1
1
1
2
3
4
4
5
6
Når jeg fyrer select statement af på den vil jeg have resultatet
1
1
1
4
4
Hvordan skrives det?
På forhånd tak.
Merc
Avatar billede Slettet bruger
29. februar 2004 - 20:12 #1
Noget med:
select * from tabel where count(id)>1
Avatar billede trer Nybegynder
29. februar 2004 - 20:12 #2
select * from (
  select kolonne
  from tabel
  group by kolonne
  having count(*)>1
  ) X
Avatar billede trer Nybegynder
29. februar 2004 - 20:14 #3
sorry, tanketorsk:

select * from tabel
where kolonne in (
  select kolonne
  from tabel
  group by kolonne
  having count(*)>1
  ) X
Avatar billede trer Nybegynder
29. februar 2004 - 20:14 #4
og det sidste X skal fjernes :-)
Avatar billede mercutio Nybegynder
29. februar 2004 - 20:21 #5
Bertie din holte ikke helt så Trer får poingene. Men tak for hjælpen begge to.
Endelige sql blev

select * from tabel where nøgle in(select nøgle from tabel group by bøgle having count(levnr)>1) order by nøgle

Så kan jeg jo roligt tage på arbejde i morgen alligevel hehe =)
Merc.
Avatar billede mercutio Nybegynder
29. februar 2004 - 20:22 #6
Den første var nok til at sætte de rigtige tanker igang =)
Avatar billede trer Nybegynder
29. februar 2004 - 21:49 #7
Tak for points.

Af hensyn til performance bør man genrelt ikke bruge "count(levnr)" men "count(*)".

Forklaringen er, at bruger du wildcard (altså *) vil SQL Server vælge en indekseret kolonne og tage rækkeantal fra indeks, angiver du et kolonnenavn vil SQL Server tælle præcis den kolonne op - og så har man måske ikke glæde af et indeks...
Avatar billede trer Nybegynder
07. marts 2004 - 16:32 #8
Eh..  points ikke tildelt?  Du har nok glemt at gøre mig "blå" før du trykkede accept?
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
Computerworld tilbyder specialiserede kurser i database-management

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