Вы можете использовать оператор select для вставки строк. Если вы хотите вставить новую строку со всеми одинаковыми значениями, просто напишите инструкцию select, чтобы получить нужные значения. Попробуйте что-то вроде этого:
INSERT INTO myTable (field1, field2, field3)
SELECT field1, field2, field3 FROM myTable WHERE id = 3;
Вот пример SQL Fiddle.
EDIT
Если вы не знаете, сколько полей, вариант у вас есть, чтобы использовать временную таблицу. См. Это, например, article. Причина, по которой вам нужна временная таблица, заключается в том, что вы не можете просто повторно вставить строку, потому что у вас будет двойная ошибка ключа. Таким образом, логика будет следующей: добавьте строку в новую таблицу, измените идентификатор, вставьте дублируемую строку с новым идентификатором в старую таблицу и отпустите временную таблицу.
Предполагая, что столбец id
is auto_increment, вы можете установить новый идентификатор на текущий максимальный id + 1. Вам не нужно это делать, но до тех пор, пока у вас есть способ обновления идентификатора до чего-то, что не существует, это будет работать. Попробуйте вместо этого:
CREATE TEMPORARY TABLE temp SELECT * FROM myTable WHERE id = 3;
UPDATE temp SET id = (SELECT MAX(id) FROM myTable) + 1;
INSERT INTO myTable SELECT * FROM temp;
DROP TABLE temp;
Вот еще один пример SQL Fiddle.
Как вы делаете SQL-скрипты так быстро? Мне нужно вечно создавать таблицы и вставлять случайные значения и прочее ... – Shahar
@Shahar Я отвечаю на многие вопросы MySQL, так что это стало привычкой ха-ха. ctrl + c и ctrl + v - ваши друзья. – AdamMc331
@Shahar Также окно _Text to DDL_ является дружественным. – Barmar