SQL Server’da nesneler tasarlarken bazı en iyi uygulamaları takip etmeliyiz. Örneğin, bir tabloda veri bütünlüğü ve performansı sağlamak için birincil anahtarlar, kimlik sütunları, kümelenmiş ve kümelenmemiş dizinler, kısıtlamalar olmalıdır. En iyi yöntemleri bile izliyoruz ama yine de yinelenen satırlar gibi sorunlarla karşılaşabiliyoruz.
SQL tablonuzun yinelenen satırlar içerdiğini ve bu yinelenen satırları kaldırmak istediğinizi varsayalım. Birçok kez bu sorunlarla karşı karşıya kalmışızdır. Anahtarları kullanmak da en iyi yöntemdir, yinelenen satır olasılığını ortadan kaldırmak için kısıtlar. Ancak tabloda yine de yinelenen satırlarımız varsa yinelenen verileri temizlemek için belirli yöntemleri izlememiz gerekir. Bu makalede, SQL tablosundan yinelenen verileri kaldırmak için yöntem bir yöntemi ele alacağz.
Örnek bir Çalışan tablosu oluşturalım ve içine birkaç kayıt ekleyelim.
Tabloda, birkaç yinelenen kayıt var ve bunları kaldırmamız gerekiyor.
SQL GROUP BY ve HAVING Kullanarak Tekrar Eden Kayıtları Silme
Bu yöntemde, yinelenen satırları tanımlamak için SQL GROUP BY deyimini kullanırız. Group By deyimi, verileri tanımlanan sütunlara göre gruplandırır ve bir satırın oluşumunu kontrol etmek için COUNT işlevini kullanabiliriz.
Örneğin, aşağıdaki sorguyu yürütün.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | SELECT isim, cinsiyet, dtarih, sinif, semt, COUNT(*) AS CNT FROM ogrenci GROUP BY isim, cinsiyet, dtarih, sinif, semt HAVING COUNT(*) >1; |
Tek bir satır tutmamız ve yinelenen satırları kaldırmamız gerekir. Tablodan yalnızca yinelenen satırları kaldırmamız gerekiyor. Sadece bir örneğini kaldırmak istiyoruz.
Her veri satırının maksimum kimliğini hesaplamak için SQL MAX işlevini kullanıyoruz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | SELECT * FROM ogrenci WHERE id NOT IN ( SELECT MAX(id) FROM ogrenci GROUP BY isim, cinsiyet, dtarih, sinif, semt ); |
Bu verileri kaldırmak için, ilk SELECT ‘i aşağıdaki sorguya göre SQL DELETE deyimiyle değiştirin.
1 2 3 4 5 6 7 8 9 10 11 12 13 | DELETE FROM ogrenci WHERE id NOT IN ( SELECT MAX(id) FROM ogrenci GROUP BY isim, cinsiyet, dtarih, sinif, semt ); |
Delete deyimini yürüttükten sonra, Çalışan tablosunda bir seçim yapın ve yinelenen satırlar içermeyen kayıtları elde ederiz.
Bu yazıda SQL sorgusu ile yinelenen kayıtları kaldırmayı öğrendik. MySQL, Oracle, SQL Server vb SQL dilleri ile rahatlıkla yinelenen kayıtları kaldırabilirsiniz.
Yorum Yap