es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Copie los datos de una tabla a otra sin crear registros duplicados SQL.

Estoy tratando de crear un trabajo que copie nuevos datos de una tabla a otra, y estoy pensando en crear un procedimiento almacenado. Incluso con el uso del método simple de copiar, se crean registros duplicados.

INSERT INTO Table1 (Column1, Column2, Column3)
SELECT Column1, Column2, Column3 FROM Table2

¿Habría alguna forma de evitar la creación de duplicados, tal vez dentro del procedimiento almacenado o en cualquier otro lugar?

Lo único que se me ocurre es limpiar completamente la Tabla1 antes de que se ejecute el comando INSERT.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, existen formas de evitar la creación de duplicados al copiar datos de una tabla a otra. Una forma es utilizar la sentencia MERGE en lugar de la sentencia INSERT. La sentencia MERGE te permite insertar o actualizar datos en una tabla de destino de forma condicional, basándose en una condición especificada. Aquí tienes un ejemplo:

    MERGE INTO Tabla1 AS Destino
    USING (SELECT Columna1, Columna2, Columna3 FROM Tabla2) AS Origen
    ON Destino.Columna1 = Origen.Columna1 -- utilizar columna(s) clave para comparar los registros
    WHEN NOT MATCHED BY TARGET THEN
        INSERT (Columna1, Columna2, Columna3)
        VALUES (Origen.Columna1, Origen.Columna2, Origen.Columna3);
    

    En este ejemplo, si una fila en Tabla2 coincide con una fila existente en Tabla1 basándose en la(s) columna(s) clave, será omitida. De lo contrario, será insertada en Tabla1.

    Otra forma es añadir una restricción única o un índice en las columnas relevantes en Tabla1. Esto evitará la inserción de duplicados generando un error cuando se encuentra un valor duplicado. Sin embargo, este puede no ser el mejor enfoque si deseas preservar los datos existentes en Tabla1.

    Borrar completamente Tabla1 antes de ejecutar el comando INSERT puede funcionar, pero tiene la desventaja de eliminar todos los datos existentes en Tabla1. También puede causar problemas si otros procesos o aplicaciones están utilizando Tabla1.

Comments are closed.