aynı kayıtların fazlalıklarını silmek

Diğer veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
heavy
Üye
Mesajlar: 67
Kayıt: 07 May 2005 03:31

aynı kayıtların fazlalıklarını silmek

Mesaj gönderen heavy »

arkadaşlar aşağıdaki gibi bir tablo var elimde

id adi soyadi
--- -------- --------------
1 osman muro
2 dursun petek
3 ahmet kalamış
4 osman muro
5 haydar kelepir
6 osman orman

bu tablodaki "osman muro" gibi aynı olan kayıtların 1 tanesi kalsın diğerleri silinsin istiyorum. bunu SQL ile nasıl yapabilirim ?
(sorgu sonundaki listem distinct kullanılarak sorgulanmış gibi olması gerekiyor).
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: aynı kayıtların fazlalıklarını silmek

Mesaj gönderen sabanakman »

Bu gibi durumda bir benzersiz alan olmalı. Problem bu alan üzerinden çözülebilmektedir.

Kod: Tümünü seç

delete from tablo where not id in (select min(id) from tablo group by AdSoyad)
gibi bir sorgu ile AdSoyad alanına göre gruplanan sorgundan minimum id değerleri haricindeki kayıtlar silinerek fazlalıklar atılır.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
heavy
Üye
Mesajlar: 67
Kayıt: 07 May 2005 03:31

Re: aynı kayıtların fazlalıklarını silmek

Mesaj gönderen heavy »

fakat adi ve soyadi ayrı field'lar!
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: aynı kayıtların fazlalıklarını silmek

Mesaj gönderen sabanakman »

O zaman

Kod: Tümünü seç

delete from tablo where not id in (select min(id) from tablo group by Ad, Soyad)
kodunu bir dene. Uygulamalı denemedim ama çalışacağını umuyorum.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Cevapla