через - sql строки в одну строку




Дублировать строку в SQL? (2)

OK У меня есть таблица с двумя столбцами, идентификатором пользователя и идентификатором курса. Он используется для назначения учебных курсов для пользователя. Это выглядит так:

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

поэтому пользователь 0 назначается курсам 1,3,6, а пользователю 1 присваивается 1, 4 5

в любом случае мне нужно взять каждого пользователя, которому назначено значение 6, и создать новую строку с этим идентификатором пользователя и курсом 11, в основном назначая каждому пользователю, которому в настоящее время назначено 6, также назначается 11

по какой-то причине (я не создавал эту базу данных) обе строки помечены как первичные ключи, и некоторые из утверждений, которые я пробовал, вызывают ошибку из-за этого, что это за сделка?

о, может быть, это потому, что есть несколько пользователей, которые уже назначены на 11, так что, возможно, это задыхается?

пожалуйста помоги


Это должно помочь:

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

Это выберет всех пользователей в курсе 6 не в курсе 11 и добавит их с курсом 11 в таблицу.


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

Кроме того, я немного смущен вашим комментарием, что оба являются первичными ключами. Обе строки могут быть частью первичного ключа, или оба могут быть уникальными, но оба они не могут быть первичным ключом. Что касается ошибок, вероятно, потому, что запрос попытался вставить строки, которые были дубликатами уже существующих строк. Чтобы устранить эту возможность, вы можете сделать это:

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

В зависимости от вашей базы данных это тоже может работать:

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

Во всяком случае, вы идете.





sql