Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Radera dubbletter men spara senast skapade

Postades av 2012-08-06 09:58:56 - Fredrik Edström, i forum databaser, Tråden har 5 Kommentarer och lästs av 7174 personer

I en tabell (kunder) kan samma kund (samma epostadress) förekomma flera gånger. Det jag vill göra är att radera alla dubbletter utom den senast skapade (den med högst kundid). Jag identifierar alltså dubbletter via e-postadressen.

<code>DELETE FROM kunder WHERE kundid IN (SELECT MIN(kundid) FROM kunder GROUP BY epost HAVING COUNT(*)>1 )</code>

Koden ovan fungerar inte riktigt tillfredsställande då det kan finnas kunder som förekommer > 2 grr. Tips på bättre SQL mottages tacksamt?


Svara

Sv: Radera dubbletter men spara senast skapade

Postades av 2012-08-06 10:54:30 - Pelle Johansson

Hej, hittade en artikel som kanske hjälper dig vidare?

http://support.microsoft.com/kb/139444

Ett annat exempel är:
http://www.4guysfromrolla.com/ASPScripts/PrintPage.asp?REF=%2Fwebtech%2Fsqlguru%2Fq051200-2.shtml

DELETE
FROM Foo1
WHERE Foo1.ID IN

-- List 1 - all rows that have duplicates
(SELECT F.ID
FROM Foo1 AS F
WHERE Exists (SELECT Field1, Field2, Count(ID)
FROM Foo1
WHERE Foo1.Field1 = F.Field1
   AND Foo1.Field2 = F.Field2
GROUP BY Foo1.Field1, Foo1.Field2
HAVING Count(Foo1.ID) > 1))
AND Foo1.ID NOT IN

-- List 2 - one row from each set of duplicate
(SELECT Min(ID)
FROM Foo1 AS F
WHERE Exists (SELECT Field1, Field2, Count(ID)
FROM Foo1
WHERE Foo1.Field1 = F.Field1
   AND Foo1.Field2 = F.Field2
GROUP BY Foo1.Field1, Foo1.Field2
HAVING Count(Foo1.ID) > 1)
GROUP BY Field1, Field2);


Eller detta exempel:
http://www.sqlteam.com/article/deleting-duplicate-records
-- Add a new column 
-- In real life I''d put an index on it
Alter table dup_authors add NewPK int NULL
go

-- populate the new Primary Key
declare @intCounter int
set @intCounter = 0
update dup_authors
SET @intCounter = NewPK = @intCounter + 1

-- ID the records to delete and get one primary key value also
-- We''ll delete all but this primary key
select au_lname, au_fname, city, state, RecCount=count(*), PktoKeep = max(NewPK)
into #dupes
from dup_authors
group by au_lname, au_fname, city, state
having count(*) > 1
order by count(*) desc, au_lname, au_fname

-- delete dupes except one Primary key for each dup record
delete	dup_authors
from	dup_authors a join #dupes d
on	d.au_lname = a.au_lname
and	d.au_fname = a.au_fname
and	d.city = a.city
and	d.state = a.state
where	a.NewPK not in (select PKtoKeep from #dupes)

-- remove the NewPK column
ALTER TABLE dup_authors DROP COLUMN NewPK
go

drop table #dupes


Svara

Sv: Radera dubbletter men spara senast skapade

Postades av 2012-08-06 14:43:42 - Ann Kapborg

<code>DELETE FROM kunder WHERE kundid
NOT IN
(SELECT max(kundid) FROM kunder GROUP BY epost )</code>

//Ann


Svara

Sv:Radera dubbletter men spara senast skapade

Postades av 2012-08-09 09:59:08 - Pelle Johansson

Fredrik, hur gick det?


Svara

Sv: Radera dubbletter men spara senast skapade

Postades av 2012-08-09 19:50:50 - Fredrik Edström

Det verkar som Ann''s enkla kod verkar fungera på det sätt som jag önskar. Har inte testat och validerat ordentligt ännu utan bara gjort en snabb körning av scriptet och kastar ett "getöga" på resultatet. Tackar för snabba svar.

pelle: varför kan man inte editera inlägg direkt när man gått till förhandsgranskning? Riktigt i-landsproblem att behöva klicka en gång extra för att kunna editera ;-)


Svara

Sv:Radera dubbletter men spara senast skapade

Postades av 2012-08-09 21:35:53 - Pelle Johansson

Fredrik, det är för att jag behöver skriva om och formatera om vissa saker i texten, exempelvis code-taggen som blir en pre-tag med inställningar istället och postar man pre-taggen blir det fel på andra ställen, så därför är förhandsgranskningen "read-only". Du får se det positivt, det fanns inte i förra versionen ;)


Svara

Nyligen

  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper
  • 16:36 Allt du behöver veta om keramiskt
  • 16:14 Vem anlitar man egentligen när tak
  • 16:14 Vem anlitar man egentligen när tak
  • 16:13 Vem anlitar man egentligen när tak
  • 11:52 Noen erfaring med uttak hos Mostbe
  • 11:51 Noen erfaring med uttak hos Mostbe

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 556
27 958
271 741
359
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies