Getting Started with Adobe After Effects - Part 6: Motion Blur


Upload Image Close it
Select File

Browse by Tags · View All
TSQL 1
SQL Server 1
CTE recursivo 1
Teoría de números 1
Partición 1
Mastermind 1

Archive · View All
June 2012 5
November 2012 3
May 2012 3
December 2012 2
August 2012 2
July 2012 2
January 2013 1

SQL Server en Castellano

Eliminación de registros dobles

May 19 2012 12:00AM by Geri Reshef   

De vez en cuando aparecen registros dobles en la tabla por error en el codigo o por duplicación de datos en los distintos recursos de información del sistema, y en este caso debemos eliminar los registros superfluos para que quede una sola.

En el pasado eso fue demasiado complicado (suponemos que no hay ninguna diferencia entre los registros duplicados, y no existe columna de numeros automaticos o Clave Primaria): crear una tabla temporal, pasar los registros usando el operador Distinct, eliminar los registros de la tabla original, copiar los registros de vuelta de la tabla temporal al original, y finalmente- eliminar la temporal..

Hoy es mucho mas simple- creamos una tabla para la demostración:

Create Table #Tmp(name VarChar(Max),
                  object_id Int,
                  schema_id Int,
                  type_desc VarChar(100));

Agregaremos la tabla de sistema sys.objects cinco veces a la nueva tabla, usando una patente útil:

Insert Into #Tmp
Select  name,
        object_id,
        schema_id,
        type_desc
From    sys.objects;
Go 5

Se puede ver facilmente que cada registro aparece ahora cinco veces en la tabla:

Select  *
From    #Tmp
Order By object_id;

Creamos un CTE para enumerar los registros dobles, y eleminaremos los superfluos – con numeros iguales o mas grandes que 2:

With T As
(Select Row_Number() Over (Partition By name,object_id,schema_id,type_desc Order By name) Num
From    #Tmp)
Delete
From    T
Where   Num>=2;

verificaremos que no quedaron registros dobles:

Select name,object_id,schema_id,type_desc
From   #Tmp
Group By name,object_id,schema_id,type_desc
Having Count(*)>1;

Comentario: en el CTE hay que incluir en la lista del Partition By todas las columnas de la tabla, dado que en la tabla no existe una Clave Primaria;

Y en el "Order By" Alguna de la las columnas, no importa cual.

Tags: 


Geri Reshef
139 · 1% · 354
1
 
0
Lifesaver
 
0
Refreshed
 
0
Learned
 
0
Incorrect



Submit

Your Comment


Sign Up or Login to post a comment.

"Eliminación de registros dobles" rated 5 out of 5 by 1 readers
Eliminación de registros dobles , 5.0 out of 5 based on 1 ratings
    Copyright © Rivera Informatic Private Ltd Contact us      Privacy Policy      Terms of use      Report Abuse      Advertising      [ZULU1097]