Avatar billede casualty Nybegynder
24. januar 2005 - 10:46 Der er 9 kommentarer og
3 løsninger

Delete i select

Er der nogen der, med et enkelt sql statement, kan både selecte og slette fra én tabel... Jeg har en tabel med ca. 6000 poster og mange af dem er dubletter...

Så... jeg vil gerne slette alle posts hvor feltet 'kobnummer' optræder mere end én gang, således at et enkelt 'kobnummer' kun optræder én gang...

Mvh Casualty
Avatar billede arne_v Ekspert
24. januar 2005 - 10:51 #1
Det bør godt kunne gøres.

Men efter hvilket kriterie skal man beslutte sig for hvilken række
der skal slettes ?
Avatar billede casualty Nybegynder
24. januar 2005 - 10:56 #2
Det er ligemeget... Hver row går igen ca. 5 gange disse rows er præcist ens
Avatar billede arne_v Ekspert
24. januar 2005 - 11:00 #3
Der er vel en primær nøgle som er forskellig ?
Avatar billede casualty Nybegynder
24. januar 2005 - 11:11 #4
Nej desværre :(
Avatar billede thomas_yde Nybegynder
24. januar 2005 - 11:21 #5
burde man ikke kunne lave noget alla:
DELETE FROM navn WHERE NOT IN (SELECT DISTINCT * FROM navn) ?
Avatar billede thomas_yde Nybegynder
24. januar 2005 - 11:23 #6
kobnummer kommer den fra en anden tabel?
Avatar billede arne_v Ekspert
24. januar 2005 - 11:55 #7
umiddelbart tror jeg at du bliver nødt til at tilføje et felt med unikke værdier for
at kunne lave en fornuftigt DELETE i SQL.
Avatar billede ldanielsen Nybegynder
24. januar 2005 - 14:57 #8
Du har er alvorligt problem. Hvis rækkerne er helt ens, så kan du ikke slette nogle af dem.

DELETE skal jo have en WHERE for at vide hvad den skal slette, og da rækkerne er ens vil de alle blive slettet, eller ingen.

Der skal altid være en primær nøgle.

Du kan gøre det at du lkaver en ny tabel magen til den første, men med en ekstra kolonne der er primær nøgle, og så fylde den med

INSERT INTO nyTabel (col1, col2, col3) SELECT DISTINCT col1, col2, col3 FROM Navn

Derefter kan du slette den gamle tabel
Avatar billede casualty Nybegynder
29. januar 2005 - 17:04 #9
Hej... Tak for deltagelsen... Jeg fandt ud af at rækker aligevel ikke var 100% ens..
Det endte med at jeg skrev en lille applikation der kunne klare det for mig :)

Hvis i nu alle lægger et svar så får i 20 points hver for deltagelsen...

Mvh Casualty
Avatar billede arne_v Ekspert
29. januar 2005 - 17:08 #10
ok
Avatar billede thomas_yde Nybegynder
29. januar 2005 - 21:41 #11
ok
Avatar billede ldanielsen Nybegynder
31. januar 2005 - 10:58 #12
Jo tak
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