webForumDet fria alternativet
Logga in / Bli medlem

Radera vissa dubletter?

Databaser & SQL

5 svar · 477 visningar · startad av Travoni

Medlem sedan okt. 20041 556 inlägg
Frågan#1

Hel igen.
Jag skulle vilja radera de dubletter som består av två lika ord. ex.

Pelle
Olle
Kalle
Kalle Olsson
Åsa
Bertil
Kalle Olsson
Berit
Berit

Alltså i detta fall så vill jag att Kalle Olsson skall plockas bort men inte "enords-dubletterna" hur gör jag det?

#Listar alla dubletter
select min(id),[B]sname[/B],spost from tbl group by [B]sname[/B]

#Tänkte mig något åt detta håll
and instr([B]sname[/B],' ')>0 GROUP BY [B]sname[/B]

...står still.

Medlem sedan mars 2005232 inlägg
#2

Vill du ha kvar en så att det inte blir en dublett, eller vill du ta bort alla som heter Kalle Olsson helt?

Medlem sedan okt. 20041 556 inlägg
#3

Nej jag vill spara en "Kalle Olsson".

Medlem sedan dec. 19996 721 inlägg
#4
DELETE FROM tblgroup WHERE id NOT IN (SELECT MAX(id) FROM tblgroup group by sname) AND sname LIKE '% %'
Medlem sedan okt. 20041 556 inlägg
#5

Ok, jag testade den emission med en select först för att se att resultatet blir det jag vill, men det tar en evinnerig tid och sedan så händer ingenting...

select id,sname,spost FROM tblgroup ...osv

Det är ca 25000 poster den skall kolla i, jag tycker det iofs inte är så många. Vad skall jag ta mig till?

Medlem sedan dec. 19996 721 inlägg
#6

Har du definierat id som primärnyckel?

Sökningen är korrekt och borde inte ta särskilt lång tid, om databasen mår bra.

Hur testade du? Alternativet att inget händer finns inte med en SELECT.

255 ms totalt · 4 externa anrop · v20260731065814-full.14655e19
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)