2013-11-20 14 views
6

Mam tabelę z adresem nazwiska osoby i nazwą stanowiska. nazwy są czasami powtarzane. Muszę porównać, czy dwoje ludzi ma takie samo imię i ten sam adres, niż muszę mieć tylko jeden zapis z nich.Jak znaleźć zduplikowane nazwy w tabeli

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

Zobacz to: http://stackoverflow.com/questions/529098/removing-duplicate-rows-from-table-in-oracle – Younes

+0

Er, co z możliwością dwóch _całkiem_ innymi ludźmi o tej samej nazwie i adresie ? Jak dwaj John Smithowie w bractwie? Lub małżeństwo z nazwiskami unisex? Czy to jest coś, o co musisz się martwić? –

Odpowiedz

8

Aby znaleźć duplikaty można zrobić:

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

Aby usunąć duplikaty można zrobić:

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

wstawić stół osoba mogłaby zrobić:

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) 
+0

Dziękuję za szybką odpowiedź, teraz jeśli muszę wstawić nazwy w tabeli Person z identyfikatorem i nazwą z tabeli Data_excel z sprawdzaniem: Nazwa powinna być dodana raz Nazwa nie powinna już istnieć w tabeli osób –

+1

@ user408437. Dodałem do tego uproszczony sposób. –

+0

Jeśli nie usuwam zduplikowanych wartości z Data_Excel i nie wstawiam? a tablica ID w osobach nie jest automatycznie zwiększana automatycznie w takim przypadku, w jaki sposób mogę wziąć ostatni identyfikator i zwiększyć wartości ID dla każdej wstawki? –

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

To da ci zapisy z tym samym P_Name & P_Address.

+0

Dzięki za szybką odpowiedź, teraz jeśli mam wstawić nazwy w tabeli osoba z ID i nazwisko z tabeli Data_excel ze sprawdzaniem: Nazwa powinna być dodawane raz Nazwa nie powinna istnieć osobiście już tabeli –

+0

chcesz pierwszy sprawdzić, czy nazwy istnieją w tabeli "osoba"? jeśli nie, wstaw je, a jeśli tak, to nic nie rób? Czy tego chcesz? – SajjadHashmi

+0

Tak, rzeczywiście i na wypadek, gdy mam wiele wpisów w Data_excel, wpisuję tylko nazwę raz. –

Powiązane problemy