Sử dụng câu trả lời từ câu hỏi này: Need MySQL INSERT - SELECT query for tables with millions of recordsMysql trên bản cập nhật khóa trùng lặp + truy vấn phụ
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;
tôi cần điều này để làm việc với một nhóm bằng và tham gia .. vậy để chỉnh sửa:
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;
Tôi dường như không thể cập nhật giá trị. Nếu tôi chỉ định old_table.value tôi nhận được một lỗi không được xác định trong danh sách trường.
chính xác, đó là vấn đề – newtover
VALUES() không hoạt động trên phiên bản mysql (5.1.32) của tôi. Tôi đã phải sử dụng mẹo trong câu trả lời của tôi dưới đây. Tôi chắc chắn muốn VALUES() sẽ hoạt động - nó thanh lịch hơn nhiều. – Justin