SQLShack (Magyar)

Ez a cikk elmagyarázza a folyamatot SQL-törlési tevékenység végrehajtása az SQL-tábla duplikált soraihoz.

Bevezetés

Bizonyos bevált módszereket kell követnünk az objektumok SQL Server-tervezése során. Például egy táblának tartalmaznia kell elsődleges kulcsokat, azonosító oszlopokat, fürtözött és nem fürtözött indexeket, korlátozásokat az adatok integritásának és teljesítményének biztosítása érdekében. Még a legjobb gyakorlatokat is követjük, és olyan problémákkal is szembesülhetünk, mint a sorok ismétlése. Előfordulhat, hogy ezeket az adatokat az adatimportálás közbülső tábláiba is megszerezzük, és el szeretnénk távolítani az ismétlődő sorokat, mielőtt ténylegesen beszúrnánk őket a termelési táblákba.

Tegyük fel, hogy az SQL táblája duplikált sorokat tartalmaz, és el szeretné távolítani ezeket az ismétlődő sorokat. . Sokszor szembesülünk ezekkel a kérdésekkel. A legjobb gyakorlat az is, ha a megfelelő kulcsokat, kényszereket használjuk a sorok ismétlődésének kiküszöbölésére, ha azonban a táblázatban már vannak duplikált sorok. Speciális módszereket kell követnünk az ismétlődő adatok megtisztításához. Ez a cikk az ismétlődő adatok eltávolításának különböző módszereit tárja fel az SQL táblából.

Hozzunk létre egy minta Employee táblázatot, és illesszünk be bele néhány rekordot.

A táblázatban van egy kevés ismétlődő rekord, és ezeket el kell távolítanunk.

SQL törölje a duplikált sorokat a Group By használatával és rendelkezzünk záradékkal

Ebben a módszerben az SQL GROUP BY záradékot használjuk a másolat azonosítására sorok. A Csoportosítás záradék alapján csoportosítja az adatokat a megadott oszlopok szerint, és a COUNT funkcióval ellenőrizhetjük egy sor előfordulását.

Például hajtsa végre a következő lekérdezést, és megkapjuk azokat a rekordokat, amelyek előfordulása nagyobb, mint 1 az Employee táblában.

A fenti kimenetben két duplikált rekord található az 1. és a 3. azonosítóval.

  • Az Emp ID 1-nek két előfordulása van az Alkalmazottak táblában
  • Az Emp ID 3-nak három előfordulása van az Alkalmazottak táblában

Meg kell tartanunk egyetlen sort, és távolítsa el az ismétlődő sorokat. Csak az ismétlődő sorokat kell eltávolítanunk a táblából. Például az EmpID 1 kétszer jelenik meg a táblázatban. Csak egy előfordulást akarunk eltávolítani.

Az SQL MAX függvény segítségével kiszámítjuk az egyes adatsorok maximális azonosítóját.

A következő képernyőképen láthatjuk, hogy a fenti Select utasítás kizárja az egyes duplikált sorok maximális azonosítóját, és csak a minimális azonosító értéket kapjuk.

Az adatok eltávolításához cserélje ki a először válassza ki az SQL delete utasítással a következő lekérdezés szerint.

Miután végrehajtotta a törlési utasítást, végezzen kiválasztást az Alkalmazottak táblán, és a következő rekordokat kapjuk, amelyek nem tartalmaznak ismétlődő sorokat.

SQL ismétlődő sorok törlése a közös tábla kifejezések (CTE) használatával

Használhatunk közös tábla kifejezéseket, amelyek általában CTE néven ismertek, az SQL Server duplikált sorainak eltávolítására. Ez az SQL Server 2005-től kezdődően érhető el.

SQL ROW_NUMBER függvényt használunk, és hozzáad egy egyedi sorszámot a sorhoz.

A következő CTE-ben felosztja a adatokat a PARTITION BY záradékkal az, és oszlophoz, és minden sorhoz generál egy sorszámot.

Ha a kimenetben bármely sor oszlopának értéke nagyobb, mint 1, akkor az azt mutatja, hogy ez egy duplikátum. sor.

A következő CTE használatával eltávolíthatjuk az ismétlődő sorokat.

Eltávolítja a sorokat amelynek értéke nagyobb, mint 1

RANK függvény az SQL-hez, hogy törölje az ismétlődő sorokat

Az SQL RANK függvényt használhatjuk a duplikált sorok eltávolítására is. Az SQL RANK függvény minden sorhoz egyedi sorazonosítót ad, függetlenül a duplikált sortól.

A következő lekérdezésben a RANK függvényt használjuk a PARTITION BY záradékkal. A PARTITION BY záradék előkészíti az adatok egy részhalmazát a megadott oszlopokhoz, és rangot ad az adott partícióhoz.

A képernyőképen megjegyezhetjük, hogy el kell távolítanunk azt a sort, amelynek rangja nagyobb, mint egy. Távolítsuk el ezeket a sorokat a következő lekérdezéssel.

SSIS csomag használatával törölje az ismétlődő sorokat az SQL-ből

Az SQL Server integrációs szolgáltatás különféle átalakításokat kínál, az operátorok mind az adminisztrátoroknak, mind a fejlesztőknek segítenek a kézi erőfeszítések csökkentésében. és optimalizálja a feladatokat. Az SSIS csomag eltávolíthatja az ismétlődő sorokat az SQL táblákból is.

Az SSIS csomag Sort Operator használatával távolíthatja el az ismétlődő sorokat

Rendezés operátorral rendezhetjük az értékeket egy SQL táblát. Megkérdezheti, hogy az adatválogatás hogyan távolíthatja el az ismétlődő sorokat?

Hozzuk létre az SSIS csomagot a feladat megjelenítéséhez.

  • Hozzon létre egy új integrációs csomagot az SQL Server Data Tools alkalmazásban.Az új csomagban adjon hozzá egy OLE DB forráskapcsolatot
  • Nyissa meg az OLE DB forrásszerkesztőt, konfigurálja a forráskapcsolatot, és válassza ki a céltáblát

  • Kattintson az Adatok előnézete lehetőségre, és láthatja, hogy a forrás táblában még mindig vannak duplikált adatok

  • Adjon hozzá egy rendezési operátort az SSIS eszköztárból az SQL törlési művelethez, és kapcsolja össze a forrásadatokkal

A Rendezés operátor konfigurálásához kattintson duplán rá, és válassza ki az oszlopokat, amelyek duplikált értékeket tartalmaznak. Esetünkben a duplikált érték a (z), oszlopokban található.

Az oszlopokhoz használhatjuk a növekvő vagy csökkenő rendezési típusokat is. Az alapértelmezett rendezési módszer növekvő. A rendezési sorrendben kiválaszthatjuk az oszlopok rendezési sorrendjét. Az 1. rendezési sorrend mutatja az oszlopot, amelyet először rendezni kell.

A bal alsó részen vegye figyelembe a jelölőnégyzetet Sorok eltávolítása a következővel: duplikált rendezési értékek.

Megteszi azt a feladatot, hogy eltávolítsa számunkra az ismétlődő sorokat a forrásadatokból. Tegyen egy pipát ebbe a jelölőnégyzetbe, és kattintson az OK gombra. Végrehajtja az SQL törlési tevékenységet az SSIS csomagban.

Amint az OK gombra kattintunk, visszatér az adatfolyam fülre, és láthatjuk a következő SSIS csomagot.

Hozzáadhatunk SQL Server rendeltetési helyeket az adatok tárolásához, miután eltávolítottuk az ismétlődő sorokat. Csak azt akarjuk ellenőrizni, hogy a rendezés operátor elvégzi-e helyettünk a feladatot, vagy sem.

Adjon hozzá egy SQL Multicast transzformációt az SSIS eszköztárból az alábbiak szerint.

A különálló adatok megtekintéséhez kattintson a jobb gombbal a Rendezés és a Multicast közötti csatlakozóra. Kattintson az Adatmegjelenítő engedélyezése elemre.

Az átfogó SSIS-csomag az alábbiak szerint néz ki.

Végezze el a csomagot az SQL törlési művelet végrehajtásához. Megnyitja a kimeneti adatnézegető rendezését az adatfolyam feladatnál. Ebben az adatmegjelenítőben az ismétlődő értékek eltávolítása után különálló adatok láthatók.

Zárja be ezt, és az SSIS csomag sikeresen megjelenik végrehajtva.

Következtetés

Ebben a cikkben feltártuk az SQL törlésének ismétlődő sorait különféle módokon, például T-SQL, CTE és SSIS csomag. Használhatja azt a módszert, amelyben jól érzi magát. Azt javaslom azonban, hogy ezeket az eljárásokat és csomagokat ne közvetlenül alkalmazzák a gyártási adatokra. Alacsonyabb környezetben kell tesztelni.

  • Szerző
  • Legfrissebb bejegyzések
MCSA tanúsítvánnyal és Microsoft tanúsítvánnyal rendelkező oktatóként Gurgaonban, Indiában, 13 éves tapasztalattal, Rajendra számos nagyvállalatnál dolgozik, elsősorban a teljesítmény optimalizálására, a monitorozásra, a magas rendelkezésre állásra, a katasztrófa utáni helyreállítási stratégiákra és a megvalósításra. Több száz hiteles cikk szerzője az SQL Server, Azure, MySQL, Linux, Power BI, Performance tuning, AWS / Amazon RDS, Git és kapcsolódó technológiákról, amelyeket eddig több mint 10 millió olvasó nézett meg.
Az egyik legnagyobb ingyenes online cikkgyűjtemény létrehozója egyetlen témában, az SQL Server Always On Available Groups 50 részből álló sorozatával. Az SQL Server közösséghez való hozzájárulása alapján különféle díjakkal ismerték el, köztük a rangos “Az év legjobb szerzője” címet folyamatosan 2020-ban és 2021-ben az SQLShacknél.
Raj mindig érdekli az új kihívásokat, így ha tanácsadásra van szüksége segítséget nyújt az írásaiban szereplő bármely témában, a [email protected] címen érhető el. Rajendra Gupta összes bejegyzésének megtekintése

Rajendra Gupta legújabb üzenetei (lásd az összeset)
  • Kisebb és nagyobb verzió frissítések az AWS számára RDS SQL Server – 2021. január 29.
  • AWS RDS PostgreSQL példányok telepítése – 2021. január 27.
  • Helyszíni SQL adatbázisok áttelepítése AWS RDS SQL Server rendszerre AWS DMS használatával – január 25. , 2021

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük