Update en bloque

Quisiera saber, así como para insertar en bloque utilizo la siguiente sentencia: "INSERT INTO <Tabla1> SELECT * FROM <Tabla2> WHERE <campo> = <valor>", si se puede también actualizar en bloque, utilizando "UPDATE" o utilizando otra sentencia, ya que para ambos ejemplos, la Tabla1 es idéntica a la Tabla2.
Respuesta
Tambien se puede utilizar update into y delete into, pero la sintaxis es un poco mas compleja
No sabía que existía Update Into o Delete Into.
¿Podrías explicármelo? ¿O tener un pequeño ejemplo?
No tengo a la mano ejemplos, pero puedes encontrar si buscas en google, solo pon "delete into" para que sea búsqueda exacta

2 respuestas más de otros expertos

Respuesta
Para el insert te recomiendo que si las 2 tablas ya están creadas listes todos los campos en tu sentencia más o menos de esta manera:
Insert into tabla1 (campo_1, campo_2, campo_3, campo_n)
select campo_1, campo_2, campo_3, campo_n from tabla2 where campo_n = valor

Ya que "INSERT INTO <Tabla1> SELECT * FROM <Tabla2> WHERE <campo> = <valor>" lo que haría es crear Tabla1 la cual sera identica a tabla2 y si ya tienes creada Tabla1 entonces la sentecia fallará.
Para el update utiliza una sentencia más o menos de esta forma:
Update Tabla1 set campo_1 = tabla2.campo_1, campo_2 = tabla2.campo_2
From Tabla1, tabla2
Where tabla1.campo_llave = tabla2.Campo_llave

Suerte
Bueno, esos ejemplos ya los sabía, sólo que quería saber si al igual cuando inserto varias filas a la vez utilizo en el "Insert" en lugar del "Values" un "Select", si también hay alguna sentencia similar para actualizar varias filas a la vez, sabiendo que las tablas son idénticas, sólo que si cambio en una tabla, actualizo (como un espejo) en la otra, pero todas a las vez, y no utilizando el "Set" campo por campo.
De todas maneras te agradezco la ayuda.
Respuesta
Claro que se puede y la estructura es:
Esto es para actualizar:
idRegistro = lblcodDocumento.Caption   'mshDocRecibidos.TextMatrix(mshDocRecibidos.Row, 0)
     SqlMod = "UPDATE memorandum SET identificador = '" & Trim(txtDocumento.Text) & "'," & _
              " documentoReferencia ='" & Trim(txtDocReferencia.Text) & "',destinatario = '" & Trim(txtDestinatario.Text) & "',asunto = '" & Trim(txtAsunto.Text) & "', fechaEmision ='" & dtpFechaRecepcion.Value & "'" & _
              " WHERE codMemo = '" & idRegistro & "'"
        cn.Execute (SqlMod)
esto es para  insertar:
SqlIns = "INSERT INTO memorandum(idMemo,codMemo,identificador,documentoReferencia,destinatario,asunto,fechaEmision)" & _
                 " VALUES (" & vidCodigo & ",'" & vCodigo & "','" & Trim(txtDocumento.Text) & "','" & Trim(txtDocReferencia.Text) & "','" & Trim(txtDestinatario.Text) & "','" & Trim(txtAsunto.Text) & "','" & dtpFechaRecepcion.Value & "')"
   '
        Cn. Execute (SqlIns)
Espero haberte ayudado. Ojo todo lo que te estoy mandando es cuando trabajas con base de datos access con sql es similar haber es tu caso avisame así te respondo con formato de sql saludos.
Bueno amigo, eso sí lo sabía, lo que quería saber es si se puede actualizar utilizando el "UPDATE" sin necesidad de utilizar "SET" para cada campo, ejemplo: "UPDATE <Tabla> SET <campo1> = <valor1>, <campo2> = <valor2>, ...", sino utilizando el "UPDATE <Tabla>..." y, algo parecido a como se inserta en bloque (en lugar de "INSERT INTO Tabla(campo1, campo2) VALUES (valor1, valor2)", uso "INSERT INTO Tabla SELECT * FROM Tabla2"), actualizar también en bloque.
Pero ni modo, voy a tener que utilizar la primera forma, el que usa "SET" campo por campo.
De todas maneras, muchas gracias por la ayuda.

Añade tu respuesta

Haz clic para o
El autor de la pregunta ya no la sigue por lo que es posible que no reciba tu respuesta.

Más respuestas relacionadas