MySql копирует строки в одну и ту же таблицу с измененным значением ключа (не переписывая существующие)
Как скопировать выделенную строку из таблицы mySql и вставить только с измененным значением ключа. Могу ли я выбрать и вставить в тот же запрос?
Если быть точным, то, что я хочу, выглядело бы так:
Столбцы, ID и ISO3 являются ключами:
+----+------+-------------------------+
| ID | ISO3 | Text |
+----+------+-------------------------+
| 1 | ENU | A text in english |
| 2 | ENU | Another text in english |
| 3 | ENU | bla bla |
| 1 | JPN | 与えられた枠 |
+----+------+-------------------------+
После вставки я хочу, чтобы моя таблица выглядела следующим образом:
+----+------+---------------------------+
| ID | ISO3 | Text |
+----+------+---------------------------+
| 1 | ENU | A text in english |
| 2 | ENU | Another text in english |
| 3 | ENU | bla bla |
| 1 | JPN | 与えられた枠 |
| 2 | JPN | Another text in english |
| 3 | JPN | bla bla |
+----+------+---------------------------+
Ответы
Ответ 1
INSERT INTO your_table (ID, ISO3, TEXT)
SELECT ID, 'JPN', TEXT
FROM your_table
WHERE ID IN ( list_of_ id )
Если вы хотите изменить значение в одной ячейке, просто введите значение жестко, а не выбирайте из таблицы (как я это сделал с 'JPN').
Ответ 2
Если ваш ключ является auto_increment и у вас есть структура таблицы, например primary_key | col1 | col2 | col3
, вы можете сделать что-то в строках
INSERT INTO table (
col1, col2, col3
) SELECT col1, col2, col3
FROM table
WHERE primary_key IN(1, 2, 45, 54, 774, 4434 /* etc */);
Ответ 3
вы можете сделать
insert into your_table (SELECT field1, field2,(changed_value_for_field3) as field3 FROM your_table where your_condition);