Sql - hogyan lehet eltávolítani ismétlődő sorokat sql-szerver - TSQL kód q - egy orosz (ru)

Feltételezve, hogy nincsenek nullák, akkor GROUP BY oszlopok és egyedi SELECT MIN (vagy MAX) rowid mint egy string menteni. Akkor csak törölni mindent, ami nem volt húr azonosítója:

Ha van egy GUID szám helyett, akkor helyettesítheti

Egy másik lehetséges módszer

Azt használja a sorrend alapja (KIVÁLASZTÁS 0) fenti, mivel ez önkényes, amely vonal van tárolva abban az esetben kötelező érvényű.

Hogy mentse az utolsó rowid érdekében, például, akkor az ORDER BY DESC rowid

A végrehajtási tervet erre gyakran könnyebb és hatékonyabb, mint az elfogadott válasz, mert nem igényel samopodklyucheniya.

Azonban ez nem mindig van így. Az egyik olyan hely, ahol az oldat alkalmazása előnyös, GROUP BY - ez egy olyan helyzet, ahol a hash egységet előnyösen kiválasztott áramlási egységek.

ROW_NUMBER döntés szinte mindig ugyanazt terv, míg a GROUP BY stratégia rugalmasabb.

Tényezők, amelyek támogatják a hash egyesített megközelítés lenne

  • Nincs hasznos index oszlopai elválasztó
  • Viszonylag kisebb csoportok egy viszonylag nagy számú másolatokat az egyes csoportok

Extrém változatai a második esetben (ha minden csoport nagyon kis csoportokban sok másolat), akkor is egyszerűen helyezze sorok az új táblát, majd TRUNCATE - visszatér az eredeti, és másolja vissza őket, hogy minimalizálja a fakitermelés képest eltávolítása igen nagy arányban sorozat.

Régebben az önálló csatlakozik ehhez a múltban, bár valószínűleg eltúlzott javaslat rendelkezik az alábbiakkal:

Az alábbi lekérdezés eltávolítására alkalmas ismétlődő sorokat. A táblázat ebben a példában van egy azonosítója, mint egy azonosító az oszlop, és az oszlopok ismétlődő adatokat - Column1. 2.oszlop és 3.oszlop.

A következő forgatókönyv használatát szemlélteti GROUP BY. Birtoklás. ORDER BY egy lekérdezés, és visszaadja az eredményeket ismételt oszlop és számláló.

Kapcsolódó cikkek