MS SQL de Mükerrer Kayıt Bulma ve Mükerrer Kayıtların Detaylarını Listeleme
MS SQL de mükerrer kayıt bulmak için aranan alana göre gruplama yapılıp birden fazla olan kayıtlar having koşulu ile bulunabilir. Ancak bu bir özet sorgu olduğundan mükkerrer kayıtların detayına tek tek bakılmadan anlaşılmaz. Biz eğer elde ettiğimiz bu özet sorguyu alt sorgu olarak kullanırsak mükkerrer kayıtların bütün alanlarını listeleyebiliriz.
Veri kaynağı için geçici tablo oluşturma
SELECT 1 AS PERNO,'AHMET1' AS ADI,'DENEME1' AS SOYADI,'İSTANBUL' AS SEHIR
INTO #GECICI_TABLO
UNION
SELECT 2 AS PERNO, 'AHMET2' AS ADI,'DENEME2' AS SOYADI,'ANKARA' AS SEHIR
UNION
SELECT 3 AS PERNO, 'AHMET3' AS ADI,'DENEME3' AS SOYADI,'İZMİR' AS SEHIR
UNION
SELECT 16 AS PERNO,'AHMET17' AS ADI,'DENEME16' AS SOYADI,'ANKARA' AS SEHIR
UNION
SELECT 4 AS PERNO,'AHMET4' AS ADI,'DENEME4' AS SOYADI,'BURSA' AS SEHIR
UNION
SELECT 5 AS PERNO,'AHMET5' AS ADI,'DENEME5' AS SOYADI,'İZMİR' AS SEHIR
UNION
SELECT 6 AS PERNO,'AHMET6' AS ADI,'DENEME6' AS SOYADI,'BURSA' AS SEHIR
UNION
SELECT 7 AS PERNO,'AHMET7' AS ADI,'DENEME7' AS SOYADI,'ADANA' AS SEHIR
UNION
SELECT 8 AS PERNO,'AHMET8' AS ADI,'DENEME8' AS SOYADI,'İSTANBUL' AS SEHIR
UNION
SELECT 9 AS PERNO,'AHMET9' AS ADI,'DENEME9' AS SOYADI,'İSTANBUL' AS SEHIR
UNION
SELECT 9 AS PERNO,'AHMET9' AS ADI,'DENEME10' AS SOYADI,'İZMİR' AS SEHIR
UNION
SELECT 10 AS PERNO,'AHMET10' AS ADI,'DENEME10' AS SOYADI,'ANKARA' AS SEHIR
UNION
SELECT 12 AS PERNO,'AHMET12' AS ADI,'DENEME12' AS SOYADI,'İZMİR' AS SEHIR
UNION
SELECT 13 AS PERNO,'AHMET13' AS ADI,'DENEME13' AS SOYADI,'ADANA' AS SEHIR
UNION
SELECT 14 AS PERNO,'AHMET14' AS ADI,'DENEME14' AS SOYADI,'İSTANBUL' AS SEHIR
UNION
SELECT 15 AS PERNO,'AHMET15' AS ADI,'DENEME15' AS SOYADI,'İSTANBUL' AS SEHIR
UNION
SELECT 16 AS PERNO,'AHMET16' AS ADI,'DENEME16' AS SOYADI,'İZMİR' AS SEHIR
Oluşturduğumuz geçici tablomuzun içeriği aşağıdaki gibidir.
SELECT * FROM #GECICI_TABLO
PERNO | ADI | SOYADI | SEHIR |
1 | AHMET1 | DENEME1 | İSTANBUL |
2 | AHMET2 | DENEME2 | ANKARA |
3 | AHMET3 | DENEME3 | İZMİR |
4 | AHMET4 | DENEME4 | BURSA |
5 | AHMET5 | DENEME5 | İZMİR |
6 | AHMET6 | DENEME6 | BURSA |
7 | AHMET7 | DENEME7 | ADANA |
8 | AHMET8 | DENEME8 | İSTANBUL |
9 | AHMET9 | DENEME10 | İZMİR |
9 | AHMET9 | DENEME9 | İSTANBUL |
10 | AHMET10 | DENEME10 | ANKARA |
12 | AHMET12 | DENEME12 | İZMİR |
13 | AHMET13 | DENEME13 | ADANA |
14 | AHMET14 | DENEME14 | İSTANBUL |
15 | AHMET15 | DENEME15 | İSTANBUL |
16 | AHMET16 | DENEME16 | İZMİR |
16 | AHMET17 | DENEME16 | ANKARA |
--MUKERRER KAYIT
SELECT PERNO,COUNT(PERNO) AS SAYI
FROM #GECICI_TABLO
GROUP BY PERNO
HAVING COUNT(PERNO)>1
PERNO | SAYI |
9 | 2 |
16 | 2 |
---MUKERRER KAYIT DETAYILARI
SELECT * FROM #GECICI_TABLO
WHERE PERNO IN (
SELECT PERNO
FROM #GECICI_TABLO
GROUP BY PERNO
HAVING COUNT(PERNO)>1)
ORDER BY PERNO
Sonuç :
PERNO | ADI | SOYADI | SEHIR |
9 | AHMET9 | DENEME10 | İZMİR |
9 | AHMET9 | DENEME9 | İSTANBUL |
16 | AHMET16 | DENEME16 | İZMİR |
16 | AHMET17 | DENEME16 | ANKARA |