Znajdź zduplikowane wiersze w bazie danych Oracle

Znajdź zduplikowane wiersze w bazie danych Oracle

Podczas pracy z bazami danych często napotykasz instancje, w których musisz znaleźć zduplikowane wiersze w danej tabeli bazy danych. Znalezienie duplikatów może pozwolić na określenie stosunku identycznych do wszystkich wartości w tabeli.

Następnie możesz użyć informacji zebranych do działania, takie jak usunięcie duplikatów lub przeniesienie ich do tabeli tymczasowej itp.

W tym poście dowiemy się, jak możemy znaleźć duplikat wartości w tabeli Oracle za pomocą funkcji Oracle Aggregate lub Analitycznych.

Konfigurowanie przykładowej tabeli i danych

Skonfigurujmy przykładowe dane do celów ilustracyjnych, aby najlepiej zrozumieć, jak korzystać z funkcji Oracle, aby znaleźć zduplikowane wartości.

Jeśli masz istniejącą tabelę, której chcesz użyć, możesz pominąć tę sekcję. W przeciwnym razie uruchom poniższą instrukcję, aby utworzyć przykładową tabelę:

Utwórz Zamówienia Tabeli_information
(
numer identyfikacyjny nie null,
klient Varchar2 (50) nie null,
data order_date,
Numer produktu,
Numer ilości,
Numer ceny,
ograniczenie order_info_pk klucz podstawowy (id)
);

Następnie dodaj przykładowe dane o duplikatach, jak pokazano:

Wstaw do zamówień_information (id, klient, zamówienie_date, produkt_id, ilość, cena)
Wartości (1, „Beatriz”, data „2022-10-10”, 4500, 45, 56);
Wstaw do zamówień_information (id, klient, zamówienie_date, produkt_id, ilość, cena)
Wartości (2, „Ali”, data „2022-10-10”, 5400, 65, 109);
Wstaw do zamówień_information (id, klient, zamówienie_date, produkt_id, ilość, cena)
Wartości (3, „Gabriel”, data „2022-10-11”, 6400, 405, 586);
Wstaw do zamówień_information (id, klient, zamówienie_date, produkt_id, ilość, cena)
Wartości (4, „Beatriz”, data „2022-10-11”, 5800, 55, 550);
Wstaw do zamówień_information (id, klient, zamówienie_date, produkt_id, ilość, cena)
Wartości (5, „Beatriz”, data „2022-10-12”, 4506, 46, 700);
Wstaw do zamówień_information (id, klient, zamówienie_date, produkt_id, ilość, cena)
Wartości (6, „Gabriel”, data „2022-10-11”, 9001, 450, 5600);
Wstaw do zamówień_information (id, klient, zamówienie_date, produkt_id, ilość, cena)
Wartości (7, „Beatriz”, data „2022-10-10”, 4500, 45, 56);
Wstaw do zamówień_information (id, klient, zamówienie_date, produkt_id, ilość, cena)
Wartości (8, „Ali”, data „2022-10-10”, 5400, 65, 109);

Po przygotowaniu tabeli i przykładowych danych możemy dowiedzieć się, jak znaleźć zduplikowane wiersze.

Oracle Znajdź zduplikowane wiersze - funkcja analityczna

W Oracle możemy użyć funkcji Count () w połączeniu z przekroczeniem i partycją według klauzuli, aby określić liczbę zduplikowanych rekordów w danej tabeli.

Weźmy przykładową instrukcję pokazaną poniżej.

Wybierz zamówienia.*, Count (*) Over (partycja według klienta, order_date) numer_of_occurence
z zamówień_informacji;

Powyższe zapytanie powinno zwrócić wiersz, a liczbę razy występuje w tabeli, jak pokazano:

Aby uzyskać tylko rekordy, które pojawiają się więcej niż raz, możemy użyć klauzuli gdzie:

z item_count AS (Wybierz zamówienia.*, Count (*) Over (partycja według klienta, order_date) numer_of_occurence
Z zamówień_informacji)
wybierać *
z item_count
gdzie numer_of_occurence> 1;

Wyjście:

Oracle Znajdź zduplikowane wartości - funkcja agregująca

Inną metodą, której możemy użyć do znalezienia zduplikowanych rekordów w tabeli, jest grupa według klauzuli. Następnie możemy określić liczbę przypadków danego rekordu w każdej grupie za pomocą funkcji Count (). Jeśli rząd pojawia się więcej niż raz, jest to duplikat.

Przykładem jest jak pokazano:

wybierać *
Z zamówień_information
gdzie (klient, zamówienie) w
(Wybierz Klient, Order_Date z grupy Zamówień_information według klienta, Order_Date o liczbie (*)> 1)
Zamów według klienta, Order_Date;

Powstałe informacje są takie, jak pokazano:

Jak widzimy, zapytanie pozwala nam uzyskać duplikat wierszy z tabeli docelowej.

Wniosek

W tym samouczku odkryłeś dwie główne metody określania zduplikowanych wierszy z danej bazy danych.