Vertaa kahta taulukkoa SQL:ssä

Vertaa Kahta Taulukkoa Sql Ssa



Tietojen vertailu SQL:ssä on yleinen tehtävä, johon jokainen tietokannan kehittäjä törmää satunnaisesti. Onneksi tietojen vertailua on monenlaisissa muodoissa, kuten kirjaimellinen vertailu, Boolen vertailu jne.

Yksi todellisista tietojen vertailuskenaarioista, joita saatat kohdata, on kuitenkin kahden taulukon vertailu. Sillä on ratkaiseva rooli tehtävissä, kuten tietojen validoinnissa, virheiden tunnistamisessa, kopioinnissa tai tietojen eheyden varmistamisessa.







Tässä opetusohjelmassa tutkimme kaikkia erilaisia ​​menetelmiä ja tekniikoita, joita voimme käyttää kahden tietokantataulukon vertaamiseen SQL:ssä.



Esimerkkitietojen määritys

Ennen kuin sukeltaamme kuhunkin menetelmään, meidän on määritettävä perustiedot esittelytarkoituksia varten.



Meillä on kaksi taulukkoa esimerkkitiedoilla, kuten esimerkissä näkyy.





Esimerkkitaulukko 1:

Seuraavassa on kyselyt ensimmäisen taulukon luomiseksi ja näytetietojen lisäämiseksi taulukkoon:



LUO TAULUKKO sample_tb1 (
työntekijä_id INT PRIMARY KEY AUTO_INCREMENT,
etunimi VARCHAR ( viisikymmentä ) ,
sukunimi VARCHAR ( viisikymmentä ) ,
osasto VARCHAR ( viisikymmentä ) ,
palkka DECIMAL ( 10 , 2 )
) ;

INSERT INTO sample_tb1 ( etunimi, sukunimi, osasto, palkka )
ARVOT
( 'Penelope' , 'Ajojahti' , 'HR' , 55 000,00 ) ,
( 'Matteus' , 'Häkki' , 'SE' , 60 000,00 ) ,
( 'Jeniffer' , 'Davis' , 'Rahoittaa' , 50 000,00 ) ,
( 'Kirsten' , 'Fawcet' , 'SE' , 62000,00 ) ,
( 'Cameron' , 'kustannus' , 'Rahoittaa' , 48000,00 ) ;

Tämän pitäisi luoda uusi taulukko nimeltä 'sample_tb1', jossa on erilaisia ​​tietoja, kuten nimiä, osastoa ja palkkaa.

Tuloksena oleva taulukko on seuraava:

Esimerkkitaulukko 2:

Jatketaan ja luodaan kaksi esimerkkitaulukkoa. Oletetaan, että tämä on varmuuskopio ensimmäisestä taulukosta. Voimme luoda taulukon ja lisätä esimerkkidatan seuraavasti:

LUO TABLE sample_tb2 (
työntekijä_id INT PRIMARY KEY AUTO_INCREMENT,
etunimi VARCHAR ( viisikymmentä ) ,
sukunimi VARCHAR ( viisikymmentä ) ,
osasto VARCHAR ( viisikymmentä ) ,
palkka DECIMAL ( 10 , 2 )
) ;
INSERT INTO sample_tb2 ( etunimi, sukunimi, osasto, palkka )
ARVOT
( 'Penelope' , 'Ajojahti' , 'HR' , 55 000,00 ) ,
( 'Matteus' , 'Häkki' , 'SE' , 60 000,00 ) ,
( 'Jeniffer' , 'Davis' , 'Rahoittaa' , 50 000,00 ) ,
( 'Kirsten' , 'Fawcet' , 'SE' , 62000,00 ) ,
( 'Audrey' , 'Dekaani' , 'Rahoittaa' , 48000,00 ) ;

Tämän pitäisi luoda taulukko ja lisätä näytetiedot edellisen kyselyn mukaisesti. Tuloksena oleva taulukko on seuraava:

Vertaa kahta taulukkoa käyttämällä Paitsi

Yksi yleisimmistä tavoista vertailla kahta taulukkoa SQL:ssä on EXCEPT-operaattorin käyttö. Tämä etsii rivit, jotka ovat ensimmäisessä taulukossa, mutta eivät toisessa taulukossa.

Voimme käyttää sitä vertailun suorittamiseen esimerkkitaulukoiden kanssa seuraavasti:

VALITSE *
FROM sample_tb1
PAITSI
VALITSE *
FROM sample_tb2;

Tässä esimerkissä EXCEPT-operaattori palauttaa kaikki erilliset rivit ensimmäisestä kyselystä (sample_tb1), jotka eivät näy toisessa kyselyssä (sample_tb2).

Vertaa kahta taulukkoa käyttämällä Unionia

Toinen menetelmä, jota voimme käyttää, on UNION-operaattori yhdessä GROUP BY -lauseen kanssa. Tämä auttaa tunnistamaan tietueet, jotka ovat olemassa yhdessä taulukossa, eivät toisessa, säilyttäen samalla tietueiden kaksoiskappaleet.

Suorita kysely, joka esitetään seuraavassa:

VALITSE
henkilöstökortti,
etunimi,
sukunimi,
osasto,
palkkaa
FROM
(
VALITSE
henkilöstökortti,
etunimi,
sukunimi,
osasto,
palkkaa
FROM
sample_tb1
UNIONI KAIKKI
VALITSE
henkilöstökortti,
etunimi,
sukunimi,
osasto,
palkkaa
FROM
sample_tb2
) AS yhdistetty_data
GROUP BY
henkilöstökortti,
etunimi,
sukunimi,
osasto,
palkkaa
OTTAA
KREIVI ( * ) = 1 ;

Annetussa esimerkissä käytämme UNION ALL -operaattoria yhdistämään molempien taulukoiden tiedot säilyttäen samalla kaksoiskappaleet.

Käytämme sitten GROUP BY -lausetta ryhmitelläksemme yhdistetyt tiedot kaikkien sarakkeiden mukaan. Lopuksi käytämme HAVING-lausetta varmistaaksemme, että vain tietueet, joiden lukumäärä on yksi (ei kaksoiskappaleita), valitaan.

Lähtö:

Tämä menetelmä on hieman monimutkaisempi, mutta se tarjoaa paljon paremman käsityksen, kun saat todelliset tiedot, jotka puuttuvat molemmista taulukoista.

Vertaa kahta taulukkoa käyttämällä INNER JOINia

Jos olet miettinyt, miksi et käyttäisi INNER JOINia? Olisit asialla. Voimme käyttää INNER JOIN -toimintoa vertaillaksemme taulukoita ja etsiäksemme yleisiä tietueita.

Otetaan esimerkiksi seuraava kysely:

VALITSE
sample_tb1. *
FROM
sample_tb1
INNER JOIN sample_tb2 ON
näyte_tb1.työntekijän_tunnus = näyte_tb2.työntekijän_tunnus;

Tässä esimerkissä käytämme SQL INNER JOIN -komentoa etsiäksemme tietueita, jotka ovat molemmissa taulukoissa tietyn sarakkeen perusteella. Vaikka tämä toimii, se voi joskus olla harhaanjohtavaa, koska et ole varma, puuttuvatko tiedot todella molemmissa taulukoissa vai vain yhdessä.

Johtopäätös

Tässä opetusohjelmassa opimme kaikista menetelmistä ja tekniikoista, joilla voimme vertailla kahta taulukkoa SQL:ssä.