2012-03-30 7 views
5

Tengo 2 tablas idénticas en SQL Server 2008, una es la tabla "Directa" que mi aplicación utiliza constantemente. Estoy bajando nuevos registros periódicamente durante el día e insertándolos en una tabla de "etapas" de la cual necesito extraer nuevos registros e insertarlos en la tabla Live. No quiero que se inserten duplicados solo en caso de que algunos registros estén superpuestos. Hay 10 columnas que necesito ver para ver si existe un registro idéntico, he visto algunos ejemplos de TSQL pero ninguno hasta el momento está funcionando, también he considerado lidiar con los engaños y simplemente informar sobre los valores DISTINCT pero DISTINCT uno funciona para un solo registro, necesito que trabaje para 10. ¿Alguna sugerencia?Rellenar la tabla activa con los registros de la tabla provisional

Gracias, Sam

Respuesta

5

Se trata de un caso de uso ideal para NOT EXISTS - se puede comprobar en tantos criterios como desee para verificar que no se inserte una víctima.

INSERT INTO Live 
SELECT <fields> 
FROM Staging s 
WHERE NOT EXISTS (SELECT 1 
        FROM Live l 
        WHERE s.FieldA = l.FieldA 
        AND s.FieldB = l.FieldB 
        <all your checks here>...) 
+0

Eso funciona genial, gracias! –

+0

@SamCromer feliz de ayudar. – JNK

Cuestiones relacionadas