Используя ответ от этого вопроса: MySQL INSERT Потребности - Запрос Select для таблиц с миллионами записей
new_table
* date
* record_id (pk)
* data_field
INSERT INTO new_table (date,record_id,data_field)
SELECT date, record_id, data_field FROM old_table
ON DUPLICATE KEY UPDATE date=old_table.data, data_field=old_table.data_field;
Мне нужно это для работы с группой и соединением.. таким образом отредактировать:
INSERT INTO new_table (date,record_id,data_field,value)
SELECT date, record_id, data_field, SUM(other_table.value) as value FROM old_table JOIN other_table USING(record_id) GROUP BY record_id
ON DUPLICATE KEY UPDATE date=old_table.data, data_field=old_table.data_field, value = value;
Я, может казаться, не обновляю значение. Если я указываю old_table.value, я становлюсь не определенным по ошибке cписка полей.
Во время поиска я нашел связанный вопрос: « MySQL ON DUPLICATE KEY UPDATE с обнуляемым столбцом в уникальном ключе ».
Ответ заключается в том, что VALUES ()
можно использовать для ссылки на столбец «значение» в подзапросе выбора.