Çarşamba, 27 Ekim 2010 13:15

Tekrarlanan Kayıtları Silmek

Yazan&Gönderen  Yusuf Arslan
Bu Öğeyi Derecelendir
(0 Oylar)

Bir tablodaki tekrarlanan kayıtları silmek için nasıl bir sorgu yazabiliriz bunu inceleyelim. Öncelikle tekrarlanan kayıtlar içeren bir tablo oluşturalım:

SQL> CREATE TABLE deneme ( no NUMBER, isim VARCHAR2(30), telefon VARCHAR2(11);
SQL> INSERT INTO deneme VALUES( 1, ‘GOKHAN’, ‘232-4... begin_of_the_skype_highlighting 232-4446735 end_of_the_skype_highlighting
);
SQL> INSERT INTO deneme VALUES( 2, ‘GOKHAN’, ‘232-4... begin_of_the_skype_highlighting 232-4446735 end_of_the_skype_highlighting
);
SQL> INSERT INTO deneme VALUES( 3, ‘GOKHAN’, ‘232-4... begin_of_the_skype_highlighting 232-4446735 end_of_the_skype_highlighting
);
SQL> INSERT INTO deneme VALUES( 4, ‘TOM’, ‘800-4... begin_of_the_skype_highlighting 800-4446735 end_of_the_skype_highlighting
);
SQL> INSERT INTO deneme VALUES( 5, ‘TOM’, ‘800-4... begin_of_the_skype_highlighting 800-4446735 end_of_the_skype_highlighting
);
SQL> INSERT INTO deneme VALUES( 6, ‘TOM’, ‘800-4... begin_of_the_skype_highlighting 800-4446735 end_of_the_skype_highlighting
);
SQL> INSERT INTO deneme VALUES( 7, ‘MIKE’, ‘900-4... begin_of_the_skype_highlighting 900-4446735 end_of_the_skype_highlighting
);
SQL> INSERT INTO deneme VALUES( 7, ‘MIKE’, ‘900-4... begin_of_the_skype_highlighting 900-4446735 end_of_the_skype_highlighting
);

Bu tip yinelen kayıtların olduğu tablolarda, yinelenmesi istenmeyen kolonları gruplayıp, oluşan gruplar içerisinde birincil anahtarı (veya bu görevi gören kolonun değeri) en düşük olan dışındakileri silecek şuna benzer bir sorgu yazabiliriz:
SQL> DELETE FROM deneme
WHERE no NOT IN ( SELECT MIN(no) FROM deneme GROUP BY isim );
IN/NOT IN operatörleri, SQL Tunning açısından önerilmeyen operatörler olduğu için özellikle büyük tablolarla çalışırken şuna benzer bir sorgu sizin için daha tercih edilebilir olacaktır:
SQL> DELETE FROM deneme D WHERE NO <> ( SELECT MIN(NO)
FROM deneme D2 WHERE D2.isim = D.isim );

Son Düzenleme Cuma, 10 Aralık 2010 12:09
Yusuf Arslan

Yusuf Arslan

Oracle Open Source

1985 Tokat/Reşadiye doğumluyum.İlk-orta-lise hayatını Amasya/Suluova ilçesinde geçirdim.Sakarya Üniversitesi Bilgisayar Mühendisliği bölümünü bitirdikten sonra kariyerime Oracle,SAP alanlarında danışmanlık vermek üzere devam etmekteyim. Kullandığım,bildiğim teknolojiler ve diller; SAP BO Oracle BI Applications Oracle Data Mining Oracle BI Reports(http://www.iski.gov.tr/web/statik.aspx?KID=1000717) Oracle Data Integrator Oracle BI Publisher(XML Publisher) Oracle Database 10g Oracle Mapviewer PL/SQL,Java,Oracle JDeveloper,Oracle Forms-Reports,C# Data warehouse process optimization Database system implementation Using encoding for security systems Software development, test and deployment Presentation and communication skills Bu adreslerden de bana ulaşabilirsiniz, [email protected] https://datawarehouse.gen.tr/ http://www.arslanyusuf.blogspot.com/ http://yusufarslaneng.blogspot.com/ http://twitter.com/yusars http://tr.linkedin.com/pub/yusuf-arslan/27/35b/57b

Website: arslanyusuf.blogspot.com/ E-posta: Bu e-Posta adresi istek dışı postalardan korunmaktadır, görüntülüyebilmek için JavaScript etkinleştirilmelidir

En Son Yusuf Arslan

İlgili Öğeler (Etikete Göre)

Başa Dön