varios valores una tabla registros otra modificar insertar ejemplos datos copiar como sql insert copy row

valores - insertar varios registros en sql



¿Copia datos de una fila existente a otra fila existente en SQL? (7)

Esto funciona bien para hacer frente a registros completos.

UPDATE your_table SET new_field = sourse_field

Tengo una tabla llena de datos de seguimiento para un curso específico, curso número 6.

Ahora agregué nuevos datos de seguimiento para el curso número 11.

Cada fila de datos es para un usuario por un curso, por lo tanto, para los usuarios asignados tanto al curso 6 como al curso 11, hay dos filas de datos.

El cliente quiere que todos los usuarios que completaron el curso número 6 en cualquier momento después del 1 de agosto de 2008 también hayan completado el curso 11. Sin embargo, no puedo convertir el 6 al 11 porque quieren preservar sus datos anteriores para el curso 6.

Entonces, para cada fila que tiene un número de curso de 6, está marcada como completa y es mayor que la fecha 1 de agosto de 2008, quiero escribir los datos de finalización en la fila que contiene el seguimiento del curso 11 para ese usuario específico.

Tendría que trasladar los datos de la fila del curso 6 a la fila del curso 11, de modo que se muevan cosas como el puntaje del usuario y la fecha de finalización publicada.

Aquí está la estructura de la tabla:

userID (int) courseID (int) course (bit) bookmark (varchar(100)) course_date (datetime) posttest (bit) post_attempts (int) post_score (float) post_date (datetime) complete (bit) complete_date (datetime) exempted (bit) exempted_date (datetime) exempted_reason (int) emailSent (bit)

Algunos valores serán NULL e ID de usuario / ID de curso obviamente no se transferirán ya que eso ya está en el lugar correcto.


Prueba esto:

UPDATE barang SET ID FROM(SELECT tblkatalog.tblkatalog_id FROM tblkatalog WHERE tblkatalog.tblkatalog_nomor = barang.NO_CAT) WHERE barang.NO_CAT <>'''';


Tal vez leí el problema incorrectamente, pero creo que ya ha insertado los 11 registros del curso y simplemente necesita actualizar aquellos que cumplen con los criterios que enumeró con los datos del curso 6.

Si este es el caso, querrá usar una UPDATE ... FROM :

UPDATE MyTable SET complete = 1, complete_date = newdata.complete_date, post_score = newdata.post_score FROM ( SELECT userID, complete_date, post_score FROM MyTable WHERE courseID = 6 AND complete = 1 AND complete_date > ''8/1/2008'' ) newdata WHERE CourseID = 11 AND userID = newdata.userID

Consulte esta pregunta relacionada para obtener más información


Use SELECCIONAR para insertar registros

INSERT tracking (userID, courseID, course, bookmark, course_date, posttest, post_attempts, post_score, post_date, complete, complete_date, exempted, exempted_date, exempted_reason, emailSent) SELECT userID, 11, course, bookmark, course_date, posttest, post_attempts, post_score, post_date, complete, complete_date, exempted, exempted_date, exempted_reason, emailSent FROM tracking WHERE courseID = 6 AND course_date > ''08-01-2008''


Copie un valor de una fila a otras filas calificadas dentro de la misma tabla (o diferentes tablas):

UPDATE `your_table` t1, `your_table` t2 SET t1.your_field = t2.your_field WHERE t1.other_field = some_condition AND t1.another_field = another_condition AND t2.source_id = ''explicit_value''

Comience por aliasar la tabla en 2 referencias únicas para que el servidor SQL pueda diferenciarlas

Luego, especifique los campos para copiar.

Por último, especifique las condiciones que rigen la selección de las filas

Dependiendo de las condiciones, puede copiar de una sola fila a una serie, o puede copiar una serie a una serie. También puede especificar tablas diferentes, e incluso puede usar sub selecciones o uniones para permitir el uso de otras tablas para controlar las relaciones.


UPDATE MyTable SET complete = 1, complete_date = newdata.complete_date, post_score = newdata.post_score FROM ( SELECT userID, complete_date, post_score FROM MyTable WHERE courseID = 6 AND complete = 1 AND complete_date > ''8/1/2008'' )


UPDATE c11 SET c11.completed= c6.completed, c11.complete_date = c6.complete_date, -- rest of columns to be copied FROM courses c11 inner join courses c6 on c11.userID = c6.userID and c11.courseID = 11 and c6.courseID = 6 -- and any other checks

Siempre he visto la cláusula From de una actualización, como una de una selección normal. En realidad, si desea verificar qué se actualizará antes de ejecutar la actualización, puede reemplazar las partes de actualización con una selección de c11. *. Vea mis comentarios sobre la respuesta del pato cojo.