una tabla solo repetir repetidos repetido registros registro mostrar misma filas duplicar consulta campo cambiando agrupar sql

tabla - ¿Duplicar una fila en SQL?



no repetir registros en consulta sql (3)

OK, tengo una tabla que tiene dos columnas, ID de usuario y ID de curso. Se utiliza para asignar cursos de formación a un usuario. Se parece a esto:

userid courseid 0 1 0 3 0 6 1 1 1 4 1 5

por lo que el usuario 0 se asigna a los cursos 1,3,6 y el usuario 1 se asigna a 1, 4 5

De todos modos, debo tomar a cada usuario asignado a 6 y crear una nueva fila que tenga ese ID de usuario y courseid 11, básicamente asignando a cada usuario que actualmente está asignado a 6 para que también se asigne a 11

por alguna razón (no creé esta base de datos), ambas filas están marcadas como claves principales, y algunas declaraciones que he intentado han generado un error debido a esto, ¿qué diablos es el trato?

Oh, tal vez sea porque hay algunos usuarios que ya están asignados a 11, por lo que se está atragantando.

por favor ayuda


Esto debería ayudar:

INSERT INTO [table] ( userid, courseid ) SELECT userid, 11 FROM [table] WHERE courseid = 6 AND userid NOT IN (SELECT userid FROM [table] WHERE courseid = 11 );

Esto seleccionará a todos los usuarios en el curso 6 no en el curso 11 y los agregará con el curso 11 a la tabla.


Insert Into TableName (userID, courseID) Select userID, 11 From TableName Where courseID=6;

Además, estoy un poco confundido por tu comentario de que ambas son claves primarias. Ambas filas pueden ser parte de la clave principal o ambas pueden ser claves únicas, pero ambas no pueden ser una clave principal. En cuanto a los errores, probablemente se deba a que la consulta intentó insertar filas que eran duplicados de filas ya existentes. Para eliminar esta posibilidad puedes hacer esto:

Insert Into TableName (userID, courseID) Select userID, 11 From TableName Where courseID=6 AND (userID not in (Select userID From TableName Where courseID=11))

Dependiendo de su base de datos, esto podría funcionar también:

INSERT OR IGNORE INTO TableName (userID, courseID) SELECT userID, 11 FROM TableName WHERE courseID=6;

De todos modos, ahí tienes.


insert into TableName (userId, courseId) select userId, 11 from TableName where courseId = 6 and not exists ( select 1 from TableName nested where nested.userId = TableName.UserId and nested.courseId = 11 )

Selecciona todos los usuarios que están asignados a courseId 6 pero aún no están asignados a courseId 11 e inserta un nuevo registro en la tabla para ellos para courseId 11.