Porównaj dwie tabele w SQL

Porownaj Dwie Tabele W Sql



Porównanie danych w SQL jest częstym zadaniem, z którym od czasu do czasu spotyka się każdy programista baz danych. Na szczęście porównanie danych występuje w wielu różnych formatach, takich jak porównanie dosłowne, porównanie logiczne itp.

Jednak jednym ze scenariuszy porównywania danych w świecie rzeczywistym, z którym możesz się spotkać, jest porównanie dwóch tabel. Odgrywa kluczową rolę w zadaniach takich jak walidacja danych, identyfikacja błędów, duplikacja czy zapewnienie integralności danych.







W tym samouczku omówimy różne metody i techniki, które możemy zastosować do porównania dwóch tabel bazy danych w języku SQL.



Przykładowa konfiguracja danych

Zanim zagłębimy się w każdą z metod, skonfigurujmy podstawową konfigurację danych do celów demonstracyjnych.



Mamy dwie tabele z przykładowymi danymi, jak pokazano w przykładzie.





Przykładowa tabela 1:

Poniżej znajdują się zapytania umożliwiające utworzenie pierwszej tabeli i wstawienie przykładowych danych do tabeli:



UTWÓRZ TABELĘ próbka_tb1 (
id_pracownika INT KLUCZ PODSTAWOWY AUTO_INCREMENT,
imię VARCHAR ( pięćdziesiąt ) ,
nazwisko VARCHAR ( pięćdziesiąt ) ,
dział VARCHAR ( pięćdziesiąt ) ,
wynagrodzenie DZIESIĘTNE ( 10 , 2 )
) ;

WSTAW DO próbki_tb1 ( imię, nazwisko, dział, wynagrodzenie )
WARTOŚCI
( 'Penelopa' , 'Pościg' , „HR” , 55000,00 ) ,
( 'Mateusz' , 'Klatka szybowa' , 'TO' , 60000,00 ) ,
( „Jeniffer” , „Davis” , 'Finanse' , 50000,00 ) ,
( „Kirsten” , „Fawcet” , 'TO' , 62000,00 ) ,
( „Cameron” , „koszt” , 'Finanse' , 48000,00 ) ;

Powinno to spowodować utworzenie nowej tabeli o nazwie „próbka_tb1” zawierającej różne informacje, takie jak nazwiska, dział i wynagrodzenie.

Wynikowa tabela wygląda następująco:

Przykładowa tabela 2:

Kontynuujmy i utwórzmy dwie przykładowe tabele. Załóżmy, że jest to kopia zapasowa pierwszej tabeli. Możemy utworzyć tabelę i wstawić przykładowe dane, jak pokazano poniżej:

UTWÓRZ TABELĘ próbka_tb2 (
id_pracownika INT KLUCZ PODSTAWOWY AUTO_INCREMENT,
imię VARCHAR ( pięćdziesiąt ) ,
nazwisko VARCHAR ( pięćdziesiąt ) ,
dział VARCHAR ( pięćdziesiąt ) ,
wynagrodzenie DZIESIĘTNE ( 10 , 2 )
) ;
WSTAW DO próbki_tb2 ( imię, nazwisko, dział, wynagrodzenie )
WARTOŚCI
( 'Penelopa' , 'Pościg' , „HR” , 55000,00 ) ,
( 'Mateusz' , 'Klatka szybowa' , 'TO' , 60000,00 ) ,
( „Jeniffer” , „Davis” , 'Finanse' , 50000,00 ) ,
( „Kirsten” , „Fawcet” , 'TO' , 62000,00 ) ,
( „Audrey” , 'Dziekan' , 'Finanse' , 48000,00 ) ;

Powinno to utworzyć tabelę i wstawić przykładowe dane, jak określono w poprzednim zapytaniu. Wynikowa tabela wygląda następująco:

Porównaj dwie tabele za pomocą wyjątku

Jednym z najczęstszych sposobów porównywania dwóch tabel w SQL jest użycie operatora EXCEPT. Spowoduje to znalezienie wierszy, które istnieją w pierwszej tabeli, ale nie istnieją w drugiej tabeli.

Możemy go użyć do przeprowadzenia porównania z przykładowymi tabelami w następujący sposób:

WYBIERAĆ *
Z przykładu_tb1
Z WYJĄTKIEM
WYBIERAĆ *
Z przykładu_tb2;

W tym przykładzie operator EXCEPT zwraca wszystkie odrębne wiersze z pierwszego zapytania (przykład_tb1), które nie pojawiają się w drugim zapytaniu (przykład_tb2).

Porównaj dwie tabele za pomocą Unii

Drugą metodą, którą możemy zastosować, jest operator UNION w połączeniu z klauzulą ​​GROUP BY. Pomaga to zidentyfikować rekordy istniejące w jednej tabeli, a nie w drugiej, zachowując jednocześnie zduplikowane rekordy.

Weźmy zapytanie pokazane poniżej:

WYBIERAĆ
dowód pracownika,
imię,
nazwisko,
dział,
wynagrodzenie
Z
(
WYBIERAĆ
dowód pracownika,
imię,
nazwisko,
dział,
wynagrodzenie
Z
próbka_tb1
UNIA WSZYSTKICH
WYBIERAĆ
dowód pracownika,
imię,
nazwisko,
dział,
wynagrodzenie
Z
próbka_tb2
) AS połączone_dane
GRUPUJ WEDŁUG
dowód pracownika,
imię,
nazwisko,
dział,
wynagrodzenie
MAJĄCY
LICZYĆ ( * ) = 1 ;

W podanym przykładzie używamy operatora UNION ALL, aby połączyć dane z obu tabel, zachowując duplikaty.

Następnie używamy klauzuli GROUP BY, aby pogrupować połączone dane według wszystkich kolumn. Na koniec używamy klauzuli HAVING, aby mieć pewność, że wybrane zostaną tylko rekordy z liczbą jeden (bez duplikatów).

Wyjście:

Ta metoda jest nieco bardziej złożona, ale zapewnia znacznie lepszy wgląd w dane, których brakuje w obu tabelach.

Porównaj dwie tabele za pomocą INNER JOIN

Jeśli zastanawiałeś się, dlaczego nie zastosować INNER JOIN? Miałbyś rację. Możemy użyć INNER JOIN do porównania tabel i znalezienia wspólnych rekordów.

Weźmy na przykład następujące zapytanie:

WYBIERAĆ
próbka_tb1. *
Z
próbka_tb1
ZŁĄCZENIE WEWNĘTRZNE próbka_tb2 WŁ
próbka_tb1.employee_id = próbka_tb2.employee_id;

W tym przykładzie używamy SQL INNER JOIN, aby znaleźć rekordy istniejące w obu tabelach na podstawie danej kolumny. Chociaż to działa, może czasami wprowadzać w błąd, ponieważ nie masz pewności, czy danych faktycznie brakuje, czy są one obecne w obu tabelach, czy tylko w jednej.

Wniosek

W tym samouczku poznaliśmy wszystkie metody i techniki, które możemy zastosować do porównania dwóch tabel w SQL.