Подтвердить что ты не робот

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                   |
+----+------+---------------------------+
4b9b3361

Ответ 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);