Borrar registros de SQL

03/07/2003 - 01:45 por Federico Francois | Informe spam
Mi consulta es la siguiente.
Tengo una base de datos con registros repetidos , ya que
no tiene ninguna clave principal.
Me gustaria borrar solamente los registros repetidos.
pero mi problema es el siguiente, si hogo "delete from
miTabla where registro = valor" , se me borran ambos
registros y mi idea es conservar solamente 1 de los
registros que se encuentra repetido.

Desde ya muchas gracias.
 

Leer las respuestas

#1 Javier Loria\(MVP\)
03/07/2003 - 02:04 | Informe spam
Hola Federico:
La forma mas facil (hay otras) es hacer un SELECT agrupado por el
cadidato de la llave Primaria, y con algun criterio de seleccion sobre las
demas columnas. Insertarlo en una tabla Temporal, borrar los datos y luego
Insertarlos. Algo como:
/* Pseudocodigo */
SELECT Columna1, MAX(Columna2), MIN(Columna3)
INTO #NuevaTabla
FROM MiTabla
GROUP BY Columna1

DELETE MiTabla

INSERT MiTabla
SELECT * FROM #NuevaTabla

DROP TABLE #NuevaTabla
/* Fin de Pseudocodigo */

Si no es una solucion razonable, vemos otras alternativas.


Javier Loria
Costa Rica (MVP)
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.

"Federico Francois" wrote in message
news:0d2a01c340f3$fe8b52c0$
Mi consulta es la siguiente.
Tengo una base de datos con registros repetidos , ya que
no tiene ninguna clave principal.
Me gustaria borrar solamente los registros repetidos.
pero mi problema es el siguiente, si hogo "delete from
miTabla where registro = valor" , se me borran ambos
registros y mi idea es conservar solamente 1 de los
registros que se encuentra repetido.

Desde ya muchas gracias.

Preguntas similares