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

Insert o Update de una Select

Estas en el tema de Insert o Update de una Select en el foro de SQL Server en Foros del Web. Hola, Vereis, tengo una duda y no se como hacerlo, tengo una consulta con una serie de resultados que puede ser de gran tamaño, el ...
  #1 (permalink)  
Antiguo 30/10/2008, 04:12
 
Fecha de Ingreso: abril-2005
Ubicación: España - Madrid
Mensajes: 236
Antigüedad: 19 años
Puntos: 2
Pregunta Insert o Update de una Select

Hola,

Vereis, tengo una duda y no se como hacerlo, tengo una consulta con una serie de resultados que puede ser de gran tamaño, el caso es que necesito insertar esos mismos registros en otra tabla, pero dependiendo de si existe ese registro (que esta definido por un identificador) habra que actualizarlo o insertarlo.

¿Me podeis ayudar que no se por donde cogerlo?

La unica forma que se me ocurre es con cursores recorriendo el resultado de la select y haciendo las comprobaciones en cada pasada del cursor pero esto se me antoja muy pesado.

Muchas gracias
  #2 (permalink)  
Antiguo 30/10/2008, 07:43
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 4 meses
Puntos: 38
Respuesta: Insert o Update de una Select

Con dos sentencias queda, un update y un insert...

Código:
-- Actualizamos los existentes si es que tienen diferencias

Update MiTabla
Set  MiCampoAActualizar =  M2.MiCampoAActualizar
From    MiTabla  M1
Inner join MiTabla2 M2
On      M1.MiCampollave =  M2.MiCampollave And
         M1.MiCampoAActualizar <> M2.MiCampoAActualizar

-- Insertamos los faltantes

Insert into MiTabla (MiCampos)
Select MisCampos
From Mitabla2 M2
Left join MiTabla M1
On  M2.MiCampoLlave = M1.MiCampoLlave
Where M1.MiCampoLlave is null

Saludos!
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
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 12:36.