Avatar billede datamatikeren Nybegynder
17. september 2003 - 11:08 Der er 11 kommentarer og
1 løsning

Slette dobbeltregistreringer

Kan man lave en SQL sætning, som sletter alle dobbeltregistreringer i en tabel??
fx.
123 | 10 | 1010 | 12:20 | 13:00 | true
124 | 10 | 1010 | 12:20 | 13:00 | true

Det første element er blot en auto-increment, som jeg bruger som nøgle.

Hvordan kan man lettest kontrollere og slette sådanne dobbeltregistreringer??
Avatar billede zogu Nybegynder
17. september 2003 - 11:12 #1
delete from tabel1 where 1 < (select count(*) from tabel1 as Chk where tabel1.felt1 = chk.felt1 and tebel1.felt2 = chk.felt2)
Avatar billede datamatikeren Nybegynder
17. september 2003 - 11:33 #2
Tak for det hurtige svar.
Det virker næsten so mdet skal... Bortset fra at den sletter begge registreringer. Det skal helst være sådan at den lader en stå, og sletter alle andre.
Avatar billede zogu Nybegynder
17. september 2003 - 11:38 #3
Hmmm, prøv at sæt 1 til 2, jeg checker lige
Avatar billede terry Ekspert
17. september 2003 - 12:02 #4
It will delete BOTH if more than one exists :o(
Avatar billede terry Ekspert
17. september 2003 - 12:02 #5
BOTH = ALL :o)
Avatar billede zogu Nybegynder
17. september 2003 - 12:04 #6
I know, just thinking out a new way. :)
Avatar billede zogu Nybegynder
17. september 2003 - 12:13 #7
delete from tabel1 where Exists (Select '*' from tabel1 as CHK where tabel1.Counter < Chk.Counter and tabel1.felt1 = chk.felt1 and tabel1.felt2 = chk.felt2 and tabel1.felt3 = chk.felt3 and tabel1.felt4 = chk.felt4 and tabel1.felt5 = chk.felt5)
Avatar billede zogu Nybegynder
17. september 2003 - 12:14 #8
Den virker. :)
Avatar billede terry Ekspert
17. september 2003 - 12:19 #9
until we prove otherwise :o)
Avatar billede zogu Nybegynder
17. september 2003 - 12:23 #10
rofl. Go for it. ;)
The problem with the other one, is that the table is not updated in the delete, first after, so count(*) wont work, but this one will delete every thing below the last reocrd which have the highest counter.
Avatar billede zogu Nybegynder
17. september 2003 - 12:25 #11
If you didnt have the auto-increment counter, you could use the Row number. ;)
Avatar billede datamatikeren Nybegynder
17. september 2003 - 12:30 #12
Takker for hjælpen.

Nu virker det sq.
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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