Çözüldü: yinelenen kayıtları bulma

Son Güncelleme: 09/20/2023

Herhangi bir veritabanında mükerrer kayıtların bulunması, mevcut verilerin genel tutarlılığına ve sağlığına müdahale edebilecek önemli bir sorun olabilir ve veritabanı yöneticileri için önemli bir zorluk teşkil edebilir. Mükerrer kayıtlar yanlış veya yanıltıcı bilgilere yol açabilir, gereksiz maliyetlere neden olabilir ve iş akışlarında verimsizlik yaratabilir. Ayrıca gerçekleri yanlış sunarak işletmelerin veya kuruluşların yanlış veri içgörülerine dayanarak yanlış kararlar almasına neden olabilirler. Oracle SQL dili, verilerinizin bütünlüğünü ve güvenilirliğini sağlayarak bu tür kopyaların belirlenmesine ve ortadan kaldırılmasına yardımcı olabilecek çok sayıda yöntem ve işleve sahiptir.

Oracle SQL kullanarak kopyaları belirleme ve ortadan kaldırma

Güçlü işlev ve operatör seti ile Oracle SQL, bir veritabanında bulunabilecek yinelenen kayıtları etkili bir şekilde tanımlamamıza ve silmemize olanak tanır. Bunu çeşitli yollarla başarmak mümkündür. Basit bir yönteme bakalım.

Öncelikle kopyaları tanımlamanız gerekir. Bunu GROUP BY ve HAVING cümleciklerini kullanarak başarabilirsiniz.

sütun1, sütun2, sayım(*) SEÇİN
FROM your_table
GRUPLAMAYA GÖRE sütun1, sütun2
HAVING count(*) > 1;

Bu kod, kayıtları seçilen sütunlara göre gruplandırır ve sayısı 1'den büyük olanları, yani kopyaları gösterir.

Artık bu kopyaları silmek için her satırın adresini sağlayan ROWID sözde sütununu kullanabilirsiniz.

your_table'dan SİL
NEREDE ROWID yok
(MİN(SIRALI) SEÇİN
FROM your_table
GRUPLAMAYA GÖRE sütun1, sütun2);

Bu koddaki iç SELECT ifadesi, her kopya grubundan bir kaydın (minimum ROWID'ye sahip olan) ROWID'sini toplar. Dıştaki DELETE ifadesi daha sonra o listede olmayan her satırı siler ve tüm kopyaları etkili bir şekilde ortadan kaldırır.

Bu yöntemin, yinelenen olarak adlandıramayacağınız kayıtları kaldırabileceği için dikkatli bir şekilde uygulanması gerektiğini anlamak önemlidir. Örneğin, aynı olayın aynı zamanda ve yerde meydana gelen farklı örneklerinden oluşan satırlar.

Oracle SQL Fonksiyonları ve Kütüphanelerinin Rolü

Oracle SQL, kopyalarla uğraşırken kullanışlı olabilecek bir dizi yerleşik işlevle birlikte gelir. Bunlardan bazıları COUNT(), ROW_NUMBER() ve DENSE_RANK()'ı içerir.

  • MKS COUNT () Belirtilen kritere uyan satır sayısını döndürmek için işlev kullanılır.
  • MKS SATIR NUMARASI() işlevi, sonuç kümesindeki her satıra benzersiz bir satır numarası atar.
  • MKS YOĞUN_RANK() işlevi, aynı sıralamaya sahip "eşit" öğeleri ele alarak, sıralı bölümünüz içindeki sıralamayı verir.

Oracle SQL ve onun geniş yardımcı programları sayesinde, kopyalarla uğraşmak artık göz korkutucu bir iş olmamalı. Doğru yapıldığında, verilerinizin akıl sağlığını ve bütünlüğünü koruyabilir, bu da gelişmiş veritabanı performansına, daha doğru iş öngörüsü ve stratejisine ve genel olarak kaynakların daha iyi yönetilmesine yol açabilir.

İlgili Mesajlar: