Salīdziniet divas tabulas SQL

Salidziniet Divas Tabulas Sql



Datu salīdzināšana SQL ir izplatīts uzdevums, ar kuru reizēm nākas saskarties katrs datu bāzes izstrādātājs. Par laimi datu salīdzināšana ir pieejama dažādos formātos, piemēram, burtiskā salīdzināšanā, Būla salīdzināšanā utt.

Tomēr viens no reālās pasaules datu salīdzināšanas scenārijiem, ar kuru jūs varētu saskarties, ir divu tabulu salīdzināšana. Tam ir izšķiroša nozīme tādos uzdevumos kā datu validācija, kļūdu identificēšana, dublēšana vai datu integritātes nodrošināšana.







Šajā apmācībā mēs izpētīsim visas dažādās metodes un paņēmienus, ko varam izmantot, lai salīdzinātu divas datu bāzes tabulas SQL.



Datu iestatīšanas paraugs

Pirms iedziļināmies katrā no metodēm, demonstrācijas nolūkos iestatīsim pamatdatu iestatījumus.



Mums ir divas tabulas ar datu paraugiem, kā parādīts piemērā.





1. tabulas paraugs:

Tālāk ir ietverti vaicājumi pirmās tabulas izveidei un datu parauga ievietošanai tabulā:



IZVEIDOT TABULU sample_tb1 (
darbinieka_id INT PRIMARY KEY AUTO_INCREMENT,
vārds VARCHAR ( piecdesmit ) ,
uzvārds VARCHAR ( piecdesmit ) ,
nodaļa VARCHAR ( piecdesmit ) ,
alga DECIMĀLĀ ( 10 , 2 )
) ;

INSERT INTO sample_tb1 ( vārds_vārds, uzvārds, nodaļa, alga )
VĒRTĪBAS
( 'Penelope' , 'Chase' , 'HR' , 55000,00 ) ,
( 'Matjū' , 'Būris' , 'TĀ' , 60000,00 ) ,
( 'Dženifere' , 'Dāvis' , 'Finanses' , 50000,00 ) ,
( 'Kirstena' , 'Fawcet' , 'TĀ' , 62000,00 ) ,
( 'Kamerons' , 'maksātājs' , 'Finanses' , 48000,00 ) ;

Tam vajadzētu izveidot jaunu tabulu ar nosaukumu “sample_tb1” ar dažādu informāciju, piemēram, uzvārdiem, nodaļu un algu.

Rezultātā iegūtā tabula ir šāda:

2. tabulas paraugs:

Turpināsim un izveidosim divas tabulas. Pieņemsim, ka šī ir pirmās tabulas rezerves kopija. Mēs varam izveidot tabulu un ievietot datu paraugu, kā parādīts tālāk.

IZVEIDOT TABULU sample_tb2 (
darbinieka_id INT PRIMARY KEY AUTO_INCREMENT,
vārds VARCHAR ( piecdesmit ) ,
uzvārds VARCHAR ( piecdesmit ) ,
nodaļa VARCHAR ( piecdesmit ) ,
alga DECIMĀLĀ ( 10 , 2 )
) ;
INSERT INTO sample_tb2 ( vārds_vārds, uzvārds, nodaļa, alga )
VĒRTĪBAS
( 'Penelope' , 'Chase' , 'HR' , 55000,00 ) ,
( 'Matjū' , 'Būris' , 'TĀ' , 60000,00 ) ,
( 'Dženifere' , 'Dāvis' , 'Finanses' , 50000,00 ) ,
( 'Kirstena' , 'Fawcet' , 'TĀ' , 62000,00 ) ,
( 'Odrija' , 'dīns' , 'Finanses' , 48000,00 ) ;

Tam vajadzētu izveidot tabulu un ievietot datu paraugu, kā norādīts iepriekšējā vaicājumā. Rezultātā iegūtā tabula ir šāda:

Salīdziniet divas tabulas, izmantojot Izņemot

Viens no visizplatītākajiem veidiem, kā salīdzināt divas tabulas SQL, ir operatora EXCEPT izmantošana. Tas atrod rindas, kas pastāv pirmajā tabulā, bet ne otrajā tabulā.

Mēs varam to izmantot, lai veiktu salīdzinājumu ar paraugu tabulām šādi:

ATLASĪT *
NO sample_tb1
IZŅEMOT
ATLASĪT *
NO sample_tb2;

Šajā piemērā operators EXCEPT atgriež visas atšķirīgās rindas no pirmā vaicājuma (sample_tb1), kas neparādās otrajā vaicājumā (sample_tb2).

Salīdziniet divas tabulas, izmantojot savienību

Otrā metode, ko varam izmantot, ir UNION operators kopā ar klauzulu GROUP BY. Tas palīdz identificēt ierakstus, kas atrodas vienā tabulā, nevis otrā, vienlaikus saglabājot ierakstu dublikātus.

Veiciet vaicājumu, kas parādīts tālāk:

ATLASĪT
darbinieka ID,
vārds,
uzvārds,
nodaļa,
algu
NO
(
ATLASĪT
darbinieka ID,
vārds,
uzvārds,
nodaļa,
algu
NO
paraugs_tb1
SAVIENĪBA VISU
ATLASĪT
darbinieka ID,
vārds,
uzvārds,
nodaļa,
algu
NO
paraugs_tb2
) AS kombinētie_dati
GROUP BY
darbinieka ID,
vārds,
uzvārds,
nodaļa,
algu
ŅEMOT
SKAITĪT ( * ) = 1 ;

Dotajā piemērā mēs izmantojam operatoru UNION ALL, lai apvienotu datus no abām tabulām, vienlaikus saglabājot dublikātus.

Pēc tam mēs izmantojam klauzulu GROUP BY, lai grupētu apvienotos datus pēc visām kolonnām. Visbeidzot, mēs izmantojam klauzulu HAVING, lai nodrošinātu, ka tiek atlasīti tikai tie ieraksti, kuru skaits ir viens (bez dublikātiem).

Izvade:

Šī metode ir nedaudz sarežģītāka, taču tā sniedz daudz labāku ieskatu, jo iegūstat faktiskos datus, kas trūkst abās tabulās.

Salīdziniet divas tabulas, izmantojot INNER JOIN

Ja esat domājis, kāpēc neizmantot INNER JOIN? Jūs būtu pie lietas. Mēs varam izmantot INNER JOIN, lai salīdzinātu tabulas un atrastu kopējos ierakstus.

Ņemiet, piemēram, šādu vaicājumu:

ATLASĪT
paraugs_tb1. *
NO
paraugs_tb1
IEKŠĒJĀ JOIN sample_tb2 ON
parauga_tb1.darbinieka_id = parauga_tb2.darbinieka_id;

Šajā piemērā mēs izmantojam SQL INNER JOIN, lai atrastu ierakstus, kas pastāv abās tabulās, pamatojoties uz doto kolonnu. Lai gan tas darbojas, tas dažkārt var būt maldinošs, jo neesat pārliecināts, vai datu patiešām trūkst vai tie ir abās tabulās vai tikai vienā.

Secinājums

Šajā apmācībā mēs uzzinājām par visām metodēm un paņēmieniem, ko varam izmantot, lai salīdzinātu divas tabulas SQL.