2013-11-20 23 views
6

Kişi adlarını ve iş unvanlarını içeren bir tablom var. isimleri bazen tekrar ediyor. İki kişinin aynı ada sahip ve aynı adrese sahip olup olmadıklarını karşılaştırmam gerek. YapabileceğinTabloda yinelenen adlar nasıl bulunur?

SELECT P_name, 
    P_Address, 
    P_city 
FROM Data_Excel 
GROUP BY P_Name, 
    P_Address, 
    P_city 
HAVING COUNT(*) > 1; 

çiftleri kaldırmak için:

Table: Data_Excel 
Name: P_Name 
Address: P_Address 
City: P_city 
+0

bu bakınız: http://stackoverflow.com/questions/529098/removing-duplicate-rows-from-table-in-oracle – Younes

+0

Er ne aynı ad ve adresi ile iki _different_ insanların olasılığı hakkında ? Bir kardeşlikte iki John Smith gibi mi? Ya da unisex isimleri olan evli bir çift mi? Endişelenmen gereken bir şey mi? –

cevap

8

Yapabileceğiniz çiftleri bulmak için

INSERT INTO Person(id,name) 
SELECT (SELECT MAX(id)+1 FROM Person),P_Name 
FROM Data_Excel WHERE P_Name NOT IN (SELECT name FROM Person) 
:

DELETE 
FROM Data_Excel 
WHERE rowid NOT IN (
    SELECT MIN(rowid) 
    FROM Data_Excel 
    GROUP BY P_Name, 
     P_Address, 
     P_city 
    ); 

yapardın Kişi tabloda Takılmalı

+0

Hemen yanıt verdiğiniz için teşekkür ederiz. Şimdi isim tablosunu içeren isim tablosunu Data_excel tablosundan ID ve Name ile kontrol ederek eklemem gerekiyorsa: İsim bir kez daha eklenmelidir İsim zaten kişi tablosunda bulunmamalıdır –

+1

@ user408437. Bunu yapmanın basit bir yolunu ekledim. –

+0

Yinelenen değerler FROM Data_Excel silmek ve daha eklerseniz? ve kişiler tablosundaki kimlik otomatik olarak kendiliğinden artmaz; bu durumda son kimliği nasıl alabilirim ve her ek için kimlik değerlerini nasıl artırabilirim? –

2
SELECT P_Name,P_Address,count(*) 
FROM Data_Excel 
GROUP BY P_Name,P_Address 
HAVING count(*) > 1; 

Bu, aynı P_Name & P_Address ile kayıtları verecektir.

+0

sayesinde, şimdi denetimi ile Data_excel tablosundan ID ve Adı Kişi tablosundaki adları eklemek zorunda: Adı ad zaten kişi tabloda mevcut olmamalıdır kez eklenmelidir –

+0

öncelikle istediğiniz Bu isimlerin "kişi" tablosunda olduğunu kontrol edin? eğer onları sokmamaktan başka bir şey yapmamaktan mı? İstediğin bu mu? – SajjadHashmi

+0

Evet ve gerçekten de Data_excel'de birden fazla girdim olması durumunda, adı sadece bir kez giriyorum. –