5 Aralık 2011 Pazartesi

Oracle PL/SQL Soru & Cevaplar 2: Bir tablo içerisindeki çiftleyen/duplicate/tekrarlayan değerleri bulup nasıl silebilirim?

Oracle'da tüm tablolar üzerinde default tanımlı olan rowid alanı sayesinde bir tablo içerisinden belirli bir set seçip ve bu seti de rowid alanı üzerinden taşıyarak çiftleyen/duplicate/tekrarlayan kayıtları silebiliriz.

Bu yöntem için yazılmış olan aşağıdaki sql ifadesini incelediğimizde, sorgunun iç kısmındaki select ifadesinde KULLANICI tablosunda bulunan ID değerlerini grupladığını ve bu değerler arasından rowid değeri minimum olan değeri aldığını görüyoruz, ifadenin asıl silme işlemini yapan delete kısmında ise iç sorgudan dönen minimum rowid değerlerinin dışındaki tüm kayıtları NOT IN ifadesi kullanarak silmeye çalıştığını görüyoruz.



 

DELETE FROM KULLANICI WHERE rowid not in
(SELECT MIN(rowid) FROM KULLANICI K GROUP BY K.ID );

Hiç yorum yok:

Yorum Gönder

Popüler Yayınlar