sql >> Database teknologi >  >> RDS >> Sqlserver

SQL:Fjern dubletter

En lærebogskandidat til vinduesfunktionen row_number():

;MED x AS (VÆLG unikt_ID ,rækkenummer() OVER (OPDELING EFTER arbejder_ID,type_ID ORDEN EFTER dato) SOM rn FRA tbl )SLET FRA tblFRA xWHERE tbl.unik_ID =x.unik_ID OG x.rn> 1

Dette tager sig også af situationen, hvor et sæt duper på (arbejder_ID, type_ID) deler den samme dato .
Se den forenklede demo på data.SE .

Opdater med enklere version

Det viser sig, at dette kan forenkles:I SQL Server kan du slette fra CTE direkte:

;MED x AS (VÆLG unikt_ID ,rækkenummer() OVER (OPDELING EFTER worker_ID,type_ID ORDER BY dato) SOM rn FRA tbl )SLET xWHERE rn> 1 


  1. BESTIL EFTER Farve med Hex-kode som kriterium i MySQL

  2. Installer mysqldb på sneleopard

  3. Kontrollerer for datointervalkonflikter i MySQL

  4. vælg alle rækker undtagen de fire seneste