2015-07-25 7 views
2

Say мой SQL таблица выглядит следующим образом:SQL создать копии строк в одной таблице

Week | User | Score 
-----+-------+------ 
1 | Bob | 14 
1 | Tim | 22 
2 | Bob | -19 
2 | Time | -12 
2 | Steve | 31 

Я хочу создать запрос SQL дублировать каждую запись из последней недели (в данном случае 2), и вставьте их в одно и то же, где неделя увеличивается на единицу, а столбец «score» равен нулю. Результат ниже:

Week | User | Score 
-----+-------+------ 
1 | Bob | 14 
1 | Tim | 22 
2 | Bob | -19 
2 | Time | -12 
2 | Steve | 31 
3 | Bob | 
3 | Tim | 
3 | Steve | 
+0

Вы должны использовать процедуры, указанные ниже: https://dev.mysql.com/doc/refman/5.0/en/create-procedure.html – x3ns

ответ

3

То, что вы хотите сделать, это просто взять последние значения и вставить их обратно с небольшими изменениями:

INSERT INTO my_table (id, name, val) 
SELECT id+1, name, null 
FROM my_table 
WHERE id = (SELECT MAX(id) FROM my_table) 

Смотреть это sqlfiddle для рабочего примера.

+0

Исправьте меня, если я ошибаюсь, код, который вы указали, будет иметь дубликат первичные ключи. 'INSERT INTO my_table (неделя, имя, val)' то просто автоинкремент первичных ключей. –

+0

Столбец id может быть идентичным, если вы хотите, чтобы он был. У первоначального вопроса были недели, хотя и не просто произвольные идентификаторы. – Anonymous

+0

Жаль об этом, неважно. –

Смежные вопросы