Primerjajte dve tabeli v SQL

Primerjajte Dve Tabeli V Sql



Primerjava podatkov v SQL je pogosta naloga, s katero se občasno sreča vsak razvijalec baze podatkov. Na srečo je primerjava podatkov na voljo v številnih oblikah, kot so dobesedna primerjava, logična primerjava itd.

Vendar pa je eden od scenarijev primerjave podatkov v resničnem svetu, na katerega lahko naletite, primerjava med dvema tabelama. Ima ključno vlogo pri nalogah, kot so validacija podatkov, prepoznavanje napak, podvajanje ali zagotavljanje celovitosti podatkov.







V tej vadnici bomo raziskali vse različne metode in tehnike, ki jih lahko uporabimo za primerjavo dveh tabel baze podatkov v SQL.



Vzorčna nastavitev podatkov

Preden se poglobimo v vsako od metod, nastavimo osnovno nastavitev podatkov za namene predstavitve.



Imamo dve tabeli z vzorčnimi podatki, kot je prikazano v primeru.





Vzorčna tabela 1:

Sledi poizvedbe za ustvarjanje prve tabele in vstavljanje vzorčnih podatkov v tabelo:



USTVARI TABELO vzorec_tb1 (
Emploee_id INT PRIMARY KEY AUTO_INCREMENT,
ime VARCHAR ( petdeset ) ,
priimek VARCHAR ( petdeset ) ,
oddelek VARCHAR ( petdeset ) ,
plača DECIMALNA ( 10 , 2 )
) ;

INSERT INTO sample_tb1 ( ime, priimek, oddelek, plača )
VREDNOTE
( 'Penelope' , 'Lov' , 'HR' , 55000,00 ) ,
( 'Matej' , 'Kletka' , 'IT' , 60000,00 ) ,
( 'Jeniffer' , 'Davis' , 'Finance' , 50000,00 ) ,
( 'Kirsten' , 'Fawcet' , 'IT' , 62000,00 ) ,
( 'Cameron' , 'costner' , 'Finance' , 48000,00 ) ;

To bi moralo ustvariti novo tabelo z imenom 'sample_tb1' z različnimi informacijami, kot so imena, oddelek in plača.

Končna tabela je naslednja:

Vzorčna tabela 2:

Nadaljujmo in ustvarimo dve vzorčni tabeli. Predpostavimo, da je to varnostna kopija prve tabele. Ustvarimo lahko tabelo in vstavimo vzorčne podatke, kot je prikazano v nadaljevanju:

USTVARI TABELO sample_tb2 (
Emploee_id INT PRIMARY KEY AUTO_INCREMENT,
ime VARCHAR ( petdeset ) ,
priimek VARCHAR ( petdeset ) ,
oddelek VARCHAR ( petdeset ) ,
plača DECIMALNA ( 10 , 2 )
) ;
INSERT INTO sample_tb2 ( ime, priimek, oddelek, plača )
VREDNOTE
( 'Penelope' , 'Lov' , 'HR' , 55000,00 ) ,
( 'Matej' , 'Kletka' , 'IT' , 60000,00 ) ,
( 'Jeniffer' , 'Davis' , 'Finance' , 50000,00 ) ,
( 'Kirsten' , 'Fawcet' , 'IT' , 62000,00 ) ,
( 'Audrey' , 'Dean' , 'Finance' , 48000,00 ) ;

To bi moralo ustvariti tabelo in vstaviti vzorčne podatke, kot je določeno v prejšnji poizvedbi. Končna tabela je naslednja:

Primerjajte dve tabeli z uporabo razen

Eden najpogostejših načinov primerjave dveh tabel v SQL je uporaba operatorja EXCEPT. To najde vrstice, ki obstajajo v prvi tabeli, ne pa tudi v drugi tabeli.

Uporabimo ga lahko za izvedbo primerjave z vzorčnimi tabelami, kot sledi:

IZBERI *
IZ sample_tb1
RAZEN
IZBERI *
FROM sample_tb2;

V tem primeru operater EXCEPT vrne vse različne vrstice iz prve poizvedbe (sample_tb1), ki se ne pojavijo v drugi poizvedbi (sample_tb2).

Primerjaj dve tabeli z uporabo Union

Druga metoda, ki jo lahko uporabimo, je operator UNION v povezavi s klavzulo GROUP BY. To pomaga prepoznati zapise, ki obstajajo v eni tabeli in ne v drugi, hkrati pa ohrani podvojene zapise.

Vzemite poizvedbo, ki je prikazana v naslednjem:

IZBERI
Emploee_id,
ime,
priimek,
oddelek,
plača
OD
(
IZBERI
Emploee_id,
ime,
priimek,
oddelek,
plača
OD
vzorec_tb1
UNION VSI
IZBERI
Emploee_id,
ime,
priimek,
oddelek,
plača
OD
vzorec_tb2
) AS kombinirani_podatki
ZDRUŽI PO
Emploee_id,
ime,
priimek,
oddelek,
plača
IMATI
ŠTEJTE ( * ) = 1 ;

V danem primeru uporabimo operator UNION ALL, da združimo podatke iz obeh tabel, pri tem pa ohranimo dvojnike.

Nato uporabimo klavzulo GROUP BY, da združimo združene podatke po vseh stolpcih. Na koncu uporabimo klavzulo HAVING, da zagotovimo, da so izbrani samo zapisi s številom ena (brez dvojnikov).

Izhod:

Ta metoda je nekoliko bolj zapletena, vendar zagotavlja veliko boljši vpogled, saj dobite dejanske podatke, ki manjkajo v obeh tabelah.

Primerjajte dve tabeli z uporabo INNER JOIN

Če ste razmišljali, zakaj ne bi uporabili INNER JOIN? Bili bi na mestu. Za primerjavo tabel in iskanje skupnih zapisov lahko uporabimo INNER JOIN.

Vzemite za primer naslednjo poizvedbo:

IZBERI
vzorec_tb1. *
OD
vzorec_tb1
INNER JOIN sample_tb2 ON
sample_tb1.employee_id = sample_tb2.employee_id;

V tem primeru uporabljamo SQL INNER JOIN za iskanje zapisov, ki obstajajo v obeh tabelah na podlagi danega stolpca. Čeprav to deluje, je včasih lahko zavajajoče, saj niste prepričani, ali podatki dejansko manjkajo ali so prisotni v obeh tabelah ali samo v eni.

Zaključek

V tej vadnici smo spoznali vse metode in tehnike, ki jih lahko uporabimo za primerjavo dveh tabel v SQL.