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.

Preguntas similare

Leer las respuestas

#6 Javier Loria\(MVP\)
03/07/2003 - 20:16 | Informe spam
Hola Federico:
Puedes identificar alguna columna o combinacion de columnas que deberia
convertirse en Llave Primaria?.
Quiero decir tienes alguna columnas o combinacion de columnas que no
debieran repetirse nunca y que no deban ser nulas?.
Porque la unica forma de evitar que siga pasando es con una llave
Primaria.

Si lo unico que te interesa es quitar los "Registros Repetidos" puedes
hacer:
/* Pseudo Codigo */
BEGIN TRAN
/* Equivalente al Distinct pero solo para los que tienen mas que 1 */
SELECT Columna1, Columna2, ...
INTO #Temporal
FROM MiTabla
GROUP BY Columna1, Columna2, ...
HAVING COUNT(*)>1

/* Elimina TODOS los REPETIDOS */
/* No es ANSI pero funciona mejor que ANSI :) */
DELETE MiTabla
FROM MiTabla JOIN #Temporal ON
MiTabla.Columna1=#Temporal.Columna1 AND
MiTabla.Columna2=#Temporal.Columna2 AND
.
/* Inserta los Repetidos una unica VEZ */
INSERT MiTabla(Columna1, Columna2, )
SELECT * FROM #Temporal

/* Borra la Tabla */
DROP TABLE #Temporal

COMMIT
/* Fin de Pseudo Codigo */

Saludos,

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 François" wrote in message
news:uQi8%
Mostrar la cita
niniguna
Mostrar la cita
tengo
Mostrar la cita
mensaje
Mostrar la cita
"claves
Mostrar la cita
que
Mostrar la cita
hay
Mostrar la cita
#7 Liliana Sorrentino
03/07/2003 - 20:18 | Informe spam
Federico:
El operador UNION une el resultado de dos o más consultas, eliminando los
duplicados (a menos que uses UNION ALL que incluye los duplicados también).
Por eso me parece que puede serte útil.

SELECT *
INTO tabla_nueva -- deja los resultados en una nueva tabla
FROM tabla
UNION
SELECT * FROM tabla

Liliana.


"Federico François" escribió en el mensaje
news:uQi8#
Mostrar la cita
niniguna
Mostrar la cita
tengo
Mostrar la cita
mensaje
Mostrar la cita
"claves
Mostrar la cita
que
Mostrar la cita
hay
Mostrar la cita
#8 Liliana Sorrentino
03/07/2003 - 20:21 | Informe spam
Javier:
Gracias por el comentario del SET ROWCOUNT, no lo había visto antes.
Con respecto a la segunda observación, estoy totalmente de acuerdo, solo que
el caso de Federico es de FILAS iguales, eso simplifica la solución, a menos
que alguno de ustedes vea algún inconveniente que yo no.
Saludos...
Liliana.

"Javier Loria(MVP)" escribió en el mensaje
news:
Mostrar la cita
TOP.
Mostrar la cita
el
Mostrar la cita
poder
Mostrar la cita
muy
Mostrar la cita
Ads by Google
Search Busqueda sugerida