Comparați două tabele în SQL

Comparati Doua Tabele In Sql



Compararea datelor în SQL este o sarcină comună pe care fiecare dezvoltator de baze de date o va întâlni ocazional. Din fericire, compararea datelor vine într-o mare varietate de formate, cum ar fi comparația literală, comparația booleană etc.

Cu toate acestea, unul dintre scenariile de comparare a datelor din lumea reală pe care le puteți întâlni este compararea între două tabele. Joacă un rol crucial în sarcini precum validarea datelor, identificarea erorilor, duplicarea sau asigurarea integrității datelor.







În acest tutorial, vom explora toate metodele și tehnicile diferite pe care le putem folosi pentru a compara două tabele de baze de date în SQL.



Eșantion de configurare a datelor

Înainte de a ne aprofunda în fiecare dintre metode, să stabilim o configurație de bază a datelor în scopuri demonstrative.



Avem două tabele cu date eșantion, așa cum se arată în exemplu.





Exemplu de tabel 1:

Următoarele conține interogările pentru crearea primului tabel și inserarea datelor eșantion în tabel:



CREATE TABLE sample_tb1 (
employee_id INT PRIMARY KEY AUTO_INCREMENT,
prenume VARCHAR ( cincizeci ) ,
prenume VARCHAR ( cincizeci ) ,
departamentul VARCHAR ( cincizeci ) ,
salariu DECIMAL ( 10 , 2 )
) ;

INSERT INTO sample_tb1 ( prenume, prenume, departament, salariu )
VALORI
( 'Penelope' , 'Urmarire' , 'HR' , 55000,00 ) ,
( 'Matei' , 'Cuşcă' , 'ACEASTA' , 60000,00 ) ,
( „Jeniffer” , „Davis” , 'Finanţa' , 50000,00 ) ,
( „Kirsten” , „Fawcet” , 'ACEASTA' , 62000,00 ) ,
( „Cameron” , „costner” , 'Finanţa' , 48000,00 ) ;

Aceasta ar trebui să creeze un nou tabel numit „sample_tb1” cu diverse informații, cum ar fi nume, departament și salariu.

Tabelul rezultat este următorul:

Exemplu de tabel 2:

Să continuăm și să creăm două exemple de tabele. Să presupunem că aceasta este o copie de rezervă a primului tabel. Putem crea tabelul și insera un eșantion de date, așa cum se arată în continuare:

CREATE TABLE sample_tb2 (
employee_id INT PRIMARY KEY AUTO_INCREMENT,
prenume VARCHAR ( cincizeci ) ,
prenume VARCHAR ( cincizeci ) ,
departamentul VARCHAR ( cincizeci ) ,
salariu DECIMAL ( 10 , 2 )
) ;
INSERT INTO sample_tb2 ( prenume, prenume, departament, salariu )
VALORI
( 'Penelope' , 'Urmarire' , 'HR' , 55000,00 ) ,
( 'Matei' , 'Cuşcă' , 'ACEASTA' , 60000,00 ) ,
( „Jeniffer” , „Davis” , 'Finanţa' , 50000,00 ) ,
( „Kirsten” , „Fawcet” , 'ACEASTA' , 62000,00 ) ,
( 'Audrey' , 'Decan' , 'Finanţa' , 48000,00 ) ;

Aceasta ar trebui să creeze un tabel și să insereze datele eșantionului așa cum este specificat în interogarea anterioară. Tabelul rezultat este următorul:

Comparați două tabele folosind Except

Una dintre cele mai comune moduri de a compara două tabele în SQL este utilizarea operatorului EXCEPT. Aceasta găsește rândurile care există în primul tabel, dar nu și în al doilea tabel.

Îl putem folosi pentru a efectua o comparație cu tabelele eșantion, după cum urmează:

SELECTAȚI *
DIN sample_tb1
CU EXCEPTIA
SELECTAȚI *
DIN sample_tb2;

În acest exemplu, operatorul EXCEPT returnează toate rândurile distincte din prima interogare (sample_tb1) care nu apar în a doua interogare (sample_tb2).

Comparați două tabele folosind Union

A doua metodă pe care o putem folosi este operatorul UNION împreună cu clauza GROUP BY. Acest lucru ajută la identificarea înregistrărilor care există într-un tabel, nu în celălalt, păstrând în același timp înregistrările duplicate.

Luați interogarea care este demonstrată în următoarele:

SELECTAȚI
card de identitate al angajatului,
Nume,
nume,
departament,
salariu
DIN
(
SELECTAȚI
card de identitate al angajatului,
Nume,
nume,
departament,
salariu
DIN
sample_tb1
UNIREA TOȚI
SELECTAȚI
card de identitate al angajatului,
Nume,
nume,
departament,
salariu
DIN
sample_tb2
) AS date_combinate
A SE GRUPA CU
card de identitate al angajatului,
Nume,
nume,
departament,
salariu
AVÂND
NUMARA ( * ) = 1 ;

În exemplul dat, folosim operatorul UNION ALL pentru a combina datele din ambele tabele, păstrând în același timp duplicatele.

Apoi folosim clauza GROUP BY pentru a grupa datele combinate pe toate coloanele. În cele din urmă, folosim clauza HAVING pentru a ne asigura că sunt selectate numai înregistrările cu un număr de unu (fără duplicate).

Ieșire:

Această metodă este puțin mai complexă, dar oferă o perspectivă mult mai bună pe măsură ce obțineți datele reale care lipsesc din ambele tabele.

Comparați două tabele folosind INNER JOIN

Dacă te-ai gândit, de ce să nu folosești un INNER JOIN? Ai fi la punct. Putem folosi un INNER JOIN pentru a compara tabelele și a găsi înregistrările comune.

Luați, de exemplu, următoarea interogare:

SELECTAȚI
sample_tb1. *
DIN
sample_tb1
INNER JOIN sample_tb2 ON
sample_tb1.employee_id = sample_tb2.employee_id;

În acest exemplu, folosim un SQL INNER JOIN pentru a găsi înregistrările care există în ambele tabele pe baza unei anumite coloane. Deși funcționează, uneori poate fi înșelător, deoarece nu sunteți sigur dacă datele lipsesc sau sunt prezente în ambele tabele sau doar într-unul.

Concluzie

În acest tutorial, am învățat despre toate metodele și tehnicile pe care le putem folosi pentru a compara două tabele în SQL.