Change Font Size

Change Screens

Change Profile

Change Layouts

Change Direction

Change Menu Styles

Cpanel
Tarihe göre etiket öğelerini görüntüle: silmek
Çarşamba, 27 Ekim 2010 13:15

Tekrarlanan Kayıtları Silmek

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 );

Kategori Oracle
You are here Kategoriler ORACLE Tarihe göre etiket öğelerini görüntüle: silmek