Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Como eliminar duplicados ?

Estas en el tema de Como eliminar duplicados ? en el foro de Bases de Datos General en Foros del Web. Hola, tengo una web de carros y tengo unos 150 duplicados se que son duplicados por que el titulo es el mismo como puedo eliminarlos ...
  #1 (permalink)  
Antiguo 16/12/2011, 09:04
(Desactivado)
 
Fecha de Ingreso: julio-2009
Mensajes: 135
Antigüedad: 15 años, 4 meses
Puntos: 1
Como eliminar duplicados ?

Hola, tengo una web de carros y tengo unos 150 duplicados

se que son duplicados por que el titulo es el mismo

como puedo eliminarlos de la base de datos ? para que no haya duplicados y solo queden los normales ?

es decir no eliminar las 300 entradas, si no eliminar 150 nada mas

Sería ejecutar la consulta esta:

search in "bdcoches" in table "on_files" duplicated campo "title"

y pulsar en continuar ???

es asi ?
  #2 (permalink)  
Antiguo 16/12/2011, 12:04
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Como eliminar duplicados ?

que manejador de base de datos usas??
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 01/01/2012, 14:53
Avatar de edbc92  
Fecha de Ingreso: octubre-2010
Ubicación: Lima - Los Olivos
Mensajes: 93
Antigüedad: 14 años
Puntos: 5
Respuesta: Como eliminar duplicados ?

Suponiendo que uses sql como gestor...

Código SQL:
Ver original
  1. CREATE PROCEDURE [dbo].[Duplicados]
  2.  
  3. AS
  4.  
  5. --INICIALIZAMOS LA TRANSACCION
  6.  
  7. BEGIN TRANSACTION
  8.  
  9.  
  10.  
  11. DECLARE @VALORDUPLICADO VARCHAR(20)
  12.  
  13. DECLARE @NUMVECESDUPLICADO INT
  14.  
  15.             --Se declara el cursor principal que obtiene el valor
  16.  
  17.                   --del campo duplicado y el numero de veces que se repite
  18.  
  19.             DECLARE CURSOR_DUPLICADOS CURSOR FOR
  20.  
  21.  
  22.  
  23.                   --usted debe reemplazar el nombre de la tabla y el nombre del
  24.  
  25.                   --campo por el cual va a eliminar este ejemplo lo realize con la tabla GIFCONSUMO
  26.  
  27.                   SELECT     VEHPLACA AS ValorDuplicado, COUNT(1) AS NumVecesDuplicado
  28.  
  29.                   FROM         GIFCONSUMO
  30.  
  31.                   GROUP BY VEHPLACA
  32.  
  33.                   HAVING      (COUNT(1) > 1)
  34.  
  35.                   ORDER BY NumVecesDuplicado
  36.  
  37.  
  38.  
  39.             --Recorre el cursor
  40.  
  41.             OPEN CURSOR_DUPLICADOS
  42.  
  43.             FETCH NEXT FROM CURSOR_DUPLICADOS
  44.  
  45.             INTO @VALORDUPLICADO,@NUMVECESDUPLICADO
  46.  
  47.                  
  48.  
  49.             WHILE @@FETCH_STATUS = 0
  50.  
  51.             BEGIN      
  52.  
  53.                                    --para controlar que no se borren todos los registros
  54.  
  55.                                    --y se mantenga un valor en la tabla
  56.  
  57.                                    DECLARE @CONTADOR INT  
  58.  
  59.                                    SET @CONTADOR =1
  60.  
  61.                                    -- el tipo de dato depende del valor definido para la tabla
  62.  
  63.                                    DECLARE @ID NUMERIC(18,0)                          
  64.  
  65.                                    --se elimina el registro(s) duplicados pero se deja uno solo.
  66.  
  67.                                    DECLARE CURSOR_BORRARDUPLICADOS CURSOR FOR
  68.  
  69.                                    --se consulta los id de los valores duplicados
  70.  
  71.                                    SELECT     CONID AS ID
  72.  
  73.                                    FROM         GIFCONSUMO                            
  74.  
  75.                                    WHERE VEHPLACA = @VALORDUPLICADO                                
  76.  
  77.                                    --Recorre el cursor de boorado de registros
  78.  
  79.                                    OPEN CURSOR_BORRARDUPLICADOS
  80.  
  81.                                    FETCH NEXT FROM CURSOR_BORRARDUPLICADOS
  82.  
  83.                                    INTO @ID
  84.  
  85.  
  86.  
  87.                                    WHILE @@FETCH_STATUS = 0
  88.  
  89.                                    BEGIN
  90.  
  91.                                          --ELIMINAMOS LOS REGISTROS DUPLICADOS
  92.  
  93.                                          --MENOS EL ULTIMO REGISTRO
  94.  
  95.                                          IF(@CONTADOR < @NUMVECESDUPLICADO)
  96.  
  97.                                              DELETE GIFCONSUMO WHERE CONID= @ID
  98.  
  99.                                          --aumentamos el contador para controloar no borrar
  100.  
  101.                                          --el ultimo registro
  102.  
  103.                                   SET @CONTADOR = @CONTADOR + 1
  104.  
  105.                                          FETCH NEXT FROM CURSOR_BORRARDUPLICADOS
  106.  
  107.                                          INTO @ID
  108.  
  109.                                    END
  110.  
  111.                                    --cierro y libero el cursor interno
  112.  
  113.                                    CLOSE CURSOR_BORRARDUPLICADOS
  114.  
  115.                                    DEALLOCATE CURSOR_BORRARDUPLICADOS
  116.  
  117.                         --cierro y libero el cursor principal
  118.  
  119.                         FETCH NEXT FROM CURSOR_DUPLICADOS
  120.  
  121.                         INTO @VALORDUPLICADO,@NUMVECESDUPLICADO
  122.  
  123.             END
  124.  
  125.             CLOSE CURSOR_DUPLICADOS
  126.  
  127.             DEALLOCATE CURSOR_DUPLICADOS
  128.  
  129. --ingresa por este lado si ocurre error o al finalizar el proceso              
  130.  
  131. IF @@ERROR <> 0
  132.  
  133. BEGIN
  134.  
  135.     ROLLBACK TRANSACTION
  136.  
  137.     RETURN -1
  138.  
  139. END
  140.  
  141.     COMMIT TRANSACTION

Solo cambia lo que necesites...
__________________
"Por medio de la perseverancia el caracol llegó al arca."
CHARLES SPURGEON
  #4 (permalink)  
Antiguo 01/01/2012, 14:59
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Como eliminar duplicados ?

SQL es el lenguaje de consultas estandar, no un manejador. En todo caso el DBMS al que haces referencia es SQL Server. No confundir, porque SQL usan todos.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: bd, duplicados, campos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:07.