Vergelijk twee tabellen in SQL

Vergelijk Twee Tabellen In Sql



Gegevensvergelijking in SQL is een veel voorkomende taak die elke databaseontwikkelaar af en toe tegenkomt. Gelukkig is gegevensvergelijking verkrijgbaar in een grote verscheidenheid aan formaten, zoals letterlijke vergelijking, Booleaanse vergelijking, enz.

Een van de scenario's waarmee u in de praktijk gegevens kunt vergelijken, is echter een vergelijking tussen twee tabellen. Het speelt een cruciale rol bij taken zoals gegevensvalidatie, foutidentificatie, duplicatie of het waarborgen van gegevensintegriteit.







In deze zelfstudie verkennen we alle verschillende methoden en technieken die we kunnen gebruiken om twee databasetabellen in SQL te vergelijken.



Voorbeeldgegevens instellen

Voordat we ingaan op elk van de methoden, moeten we een basisgegevensconfiguratie opzetten voor demonstratiedoeleinden.



We hebben twee tabellen met voorbeeldgegevens, zoals weergegeven in het voorbeeld.





Voorbeeldtabel 1:

Hieronder vindt u de query's voor het maken van de eerste tabel en het invoegen van de voorbeeldgegevens in de tabel:



MAAK TABEL sample_tb1 (
werknemer_id INT PRIMAIRE SLEUTEL AUTO_INCREMENT,
voornaam VARCHAR ( vijftig ) ,
achternaam VARCHAR ( vijftig ) ,
afdeling VARCHAR ( vijftig ) ,
salaris DECIMAAL ( 10 , 2 )
) ;

INSERT IN voorbeeld_tb1 ( voornaam, achternaam, afdeling, salaris )
WAARDEN
( 'Penelope' , 'Achtervolging' , 'HR' , 55000,00 ) ,
( 'Mattheüs' , 'Kooi' , 'HET' , 60000,00 ) ,
( 'Jeniffer' , 'Davis' , 'Financiën' , 50000,00 ) ,
( 'Kirsten' , 'Fawcet' , 'HET' , 62000,00 ) ,
( 'Cameron' , 'kostendrager' , 'Financiën' , 48000,00 ) ;

Dit zou een nieuwe tabel moeten creëren met de naam “sample_tb1” met verschillende informatie zoals namen, afdeling en salaris.

De resulterende tabel is als volgt:

Voorbeeldtabel 2:

Laten we verder gaan en twee voorbeeldtabellen maken. Stel dat dit een reservekopie is van de eerste tabel. We kunnen de tabel maken en voorbeeldgegevens invoegen, zoals hieronder weergegeven:

MAAK TABEL sample_tb2 (
werknemer_id INT PRIMAIRE SLEUTEL AUTO_INCREMENT,
voornaam VARCHAR ( vijftig ) ,
achternaam VARCHAR ( vijftig ) ,
afdeling VARCHAR ( vijftig ) ,
salaris DECIMAAL ( 10 , 2 )
) ;
INSERT IN voorbeeld_tb2 ( voornaam, achternaam, afdeling, salaris )
WAARDEN
( 'Penelope' , 'Achtervolging' , 'HR' , 55000,00 ) ,
( 'Mattheüs' , 'Kooi' , 'HET' , 60000,00 ) ,
( 'Jeniffer' , 'Davis' , 'Financiën' , 50000,00 ) ,
( 'Kirsten' , 'Fawcet' , 'HET' , 62000,00 ) ,
( 'Audrey' , 'Decaan' , 'Financiën' , 48000,00 ) ;

Hierdoor zou een tabel moeten worden gemaakt en de voorbeeldgegevens moeten worden ingevoegd zoals gespecificeerd in de vorige query. De resulterende tabel is als volgt:

Vergelijk twee tabellen met Uitgezonderd

Een van de meest gebruikelijke manieren om twee tabellen in SQL te vergelijken is het gebruik van de EXCEPT-operator. Hiermee worden de rijen gevonden die in de eerste tabel voorkomen, maar niet in de tweede tabel.

We kunnen het gebruiken om als volgt een vergelijking met de voorbeeldtabellen uit te voeren:

SELECTEER *
VAN monster_tb1
BEHALVE
SELECTEER *
VAN monster_tb2;

In dit voorbeeld retourneert de EXCEPT-operator alle afzonderlijke rijen uit de eerste query (sample_tb1) die niet voorkomen in de tweede query (sample_tb2).

Vergelijk twee tabellen met behulp van Union

De tweede methode die we kunnen gebruiken is de UNION-operator in combinatie met de GROUP BY-clausule. Dit helpt bij het identificeren van de records die in de ene tabel voorkomen, en niet in de andere, terwijl de dubbele records behouden blijven.

Neem de query die hieronder wordt gedemonstreerd:

SELECTEER
medewerker_id,
Voornaam,
achternaam,
afdeling,
salaris
VAN
(
SELECTEER
medewerker_id,
Voornaam,
achternaam,
afdeling,
salaris
VAN
voorbeeld_tb1
UNIE ALLEMAAL
SELECTEER
medewerker_id,
Voornaam,
achternaam,
afdeling,
salaris
VAN
voorbeeld_tb2
) AS gecombineerde_gegevens
GROEP DOOR
medewerker_id,
Voornaam,
achternaam,
afdeling,
salaris
HEBBEN
GRAAF ( * ) = 1 ;

In het gegeven voorbeeld gebruiken we de operator UNION ALL om de gegevens uit beide tabellen te combineren, terwijl de duplicaten behouden blijven.

Vervolgens gebruiken we de GROUP BY-clausule om de gecombineerde gegevens op alle kolommen te groeperen. Ten slotte gebruiken we de HAVING-clausule om ervoor te zorgen dat alleen de records met een telling van één (geen duplicaten) worden geselecteerd.

Uitgang:

Deze methode is iets complexer, maar biedt een veel beter inzicht omdat u de feitelijke gegevens krijgt die in beide tabellen ontbreken.

Vergelijk twee tabellen met INNER JOIN

Als je erover hebt nagedacht, waarom gebruik je dan niet een INNER JOIN? Je zou het goed hebben. We kunnen een INNER JOIN gebruiken om de tabellen te vergelijken en de gemeenschappelijke records te vinden.

Neem bijvoorbeeld de volgende vraag:

SELECTEER
voorbeeld_tb1. *
VAN
voorbeeld_tb1
INNER JOIN sample_tb2 AAN
voorbeeld_tb1.werknemer_id = voorbeeld_tb2.werknemer_id;

In dit voorbeeld gebruiken we een SQL INNER JOIN om de records te vinden die in beide tabellen voorkomen op basis van een bepaalde kolom. Hoewel dit werkt, kan het soms misleidend zijn, omdat u niet zeker weet of de gegevens daadwerkelijk ontbreken of aanwezig zijn in beide tabellen of slechts in één.

Conclusie

In deze zelfstudie leerden we over alle methoden en technieken die we kunnen gebruiken om twee tabellen in SQL te vergelijken.