Hasonlítson össze két táblázatot SQL-ben

Hasonlitson Ossze Ket Tablazatot Sql Ben



Az adatok összehasonlítása SQL-ben gyakori feladat, amellyel minden adatbázis-fejlesztő alkalmanként találkozik. Szerencsére az adatok összehasonlítása sokféle formátumban létezik, például szó szerinti összehasonlításban, logikai összehasonlításban stb.

Azonban az egyik valós adat-összehasonlítási forgatókönyv, amellyel találkozhat, a két tábla összehasonlítása. Döntő szerepet játszik az olyan feladatokban, mint az adatok ellenőrzése, hibaazonosítás, sokszorosítás vagy az adatok integritásának biztosítása.







Ebben az oktatóanyagban megvizsgáljuk az összes olyan módszert és technikát, amellyel két adatbázistábla összehasonlítható SQL-ben.



Minta adatbeállítás

Mielőtt belemerülnénk az egyes módszerekbe, állítsunk be egy alapvető adatbeállítást demonstrációs célból.



Két táblázatunk van mintaadatokkal, ahogy a példában is látható.





1. minta táblázat:

Az alábbiakban az első tábla létrehozásához és a mintaadatok táblázatba történő beillesztéséhez szükséges lekérdezések találhatók:



TÁBLÁZAT LÉTREHOZÁSA minta_tb1 (
worker_id INT ELSŐDLEGES KULCS AUTO_INCREMENT,
keresztnév VARCHAR ( ötven ) ,
vezetéknév VARCHAR ( ötven ) ,
osztály VARCHAR ( ötven ) ,
fizetés DECIMÁLIS ( 10 , 2 )
) ;

INSERT INTO minta_tb1 ( keresztnév, vezetéknév, osztály, fizetés )
ÉRTÉKEK
( 'Pénelope' , 'Üldözés' , 'HR' , 55000,00 ) ,
( 'Matthew' , 'Ketrec' , 'AZT' , 60000,00 ) ,
( 'Jeniffer' , 'Davis' , 'Pénzügy' , 50000,00 ) ,
( 'Kirsten' , 'Fawcet' , 'AZT' , 62000,00 ) ,
( 'Cameron' , 'költségár' , 'Pénzügy' , 48000,00 ) ;

Ezzel létre kell hozni egy új, „sample_tb1” táblát különféle információkkal, például nevekkel, osztályokkal és fizetéssel.

Az eredményül kapott táblázat a következő:

2. minta táblázat:

Folytassuk és készítsünk két mintatáblázatot. Tegyük fel, hogy ez az első tábla biztonsági másolata. Létrehozhatjuk a táblázatot és beszúrhatunk egy mintaadatot az alábbiak szerint:

TÁBLÁZAT LÉTREHOZÁSA minta_tb2 (
worker_id INT ELSŐDLEGES KULCS AUTO_INCREMENT,
keresztnév VARCHAR ( ötven ) ,
vezetéknév VARCHAR ( ötven ) ,
osztály VARCHAR ( ötven ) ,
fizetés DECIMÁLIS ( 10 , 2 )
) ;
INSERT INTO minta_tb2 ( keresztnév, vezetéknév, osztály, fizetés )
ÉRTÉKEK
( 'Pénelope' , 'Üldözés' , 'HR' , 55000,00 ) ,
( 'Matthew' , 'Ketrec' , 'AZT' , 60000,00 ) ,
( 'Jeniffer' , 'Davis' , 'Pénzügy' , 50000,00 ) ,
( 'Kirsten' , 'Fawcet' , 'AZT' , 62000,00 ) ,
( 'Audrey' , 'Dékán' , 'Pénzügy' , 48000,00 ) ;

Ezzel létre kell hozni egy táblázatot, és be kell illeszteni a mintaadatokat az előző lekérdezésben megadottak szerint. Az eredményül kapott táblázat a következő:

Hasonlítson össze két táblázatot a Kivéve

Két tábla összehasonlításának egyik leggyakoribb módja az SQL-ben az EXCEPT operátor használata. Ez megkeresi azokat a sorokat, amelyek az első táblában vannak, de a második táblában nem.

Használhatjuk a mintatáblázatokkal való összehasonlításra az alábbiak szerint:

KIVÁLASZTÁS *
FROM sample_tb1
KIVÉVE
KIVÁLASZTÁS *
FROM minta_tb2;

Ebben a példában az EXCEPT operátor az első lekérdezésből (minta_tb1) minden olyan különálló sort ad vissza, amely nem jelenik meg a második lekérdezésben (minta_tb2).

Hasonlítson össze két táblázatot az Unió segítségével

A második használható módszer az UNION operátor a GROUP BY záradékkal együtt. Ez segít azonosítani az egyik táblában található rekordokat, a másikban nem, miközben megőrzi az ismétlődő rekordokat.

Végezze el a következőben bemutatott lekérdezést:

KIVÁLASZTÁS
munkavállalói azonosító,
keresztnév,
vezetéknév,
osztály,
fizetés
TÓL TŐL
(
KIVÁLASZTÁS
munkavállalói azonosító,
keresztnév,
vezetéknév,
osztály,
fizetés
TÓL TŐL
minta_tb1
UNION ALL
KIVÁLASZTÁS
munkavállalói azonosító,
keresztnév,
vezetéknév,
osztály,
fizetés
TÓL TŐL
minta_tb2
) AS kombinált_adatok
CSOPORTOSÍT
munkavállalói azonosító,
keresztnév,
vezetéknév,
osztály,
fizetés
HAVING
SZÁMOL ( * ) = 1 ;

Az adott példában az UNION ALL operátort használjuk a két tábla adatainak kombinálására, miközben megtartjuk a duplikátumokat.

Ezután a GROUP BY záradékot használjuk az egyesített adatok összes oszlop szerinti csoportosítására. Végül a HAVING záradékot használjuk annak biztosítására, hogy csak az egy számmal rendelkező rekordok legyenek kiválasztva (nincs ismétlődés).

Kimenet:

Ez a módszer egy kicsit összetettebb, de sokkal jobb betekintést nyújt, mivel megkapja a tényleges adatokat, amelyek mindkét táblából hiányoznak.

Hasonlítson össze két táblázatot az INNER JOIN használatával

Ha már gondolkodott, miért ne használna BELSŐ JOIN-t? A lényegen lennél. Egy INNER JOIN segítségével összehasonlíthatjuk a táblákat és megkereshetjük a közös rekordokat.

Vegyük például a következő lekérdezést:

KIVÁLASZTÁS
minta_tb1. *
TÓL TŐL
minta_tb1
BELSŐ CSATLAKOZÁS sample_tb2 BE
minta_tb1.alkalmazotti_azonosító = minta_tb2.alkalmazotti_azonosító;

Ebben a példában egy SQL INNER JOIN segítségével keressük meg a mindkét táblában található rekordokat egy adott oszlop alapján. Bár ez működik, néha félrevezető lehet, mivel nem biztos abban, hogy az adatok valóban hiányoznak-e, vagy mindkét táblában szerepelnek, vagy csak az egyikben.

Következtetés

Ebben az oktatóanyagban megismerkedtünk az összes módszerrel és technikával, amellyel két táblázatot összehasonlíthatunk az SQL-ben.