Một cái gì đó đơn giản như thế này có hiệu quả không?
insert into cities (city, state, size)
select city, state, count(*) as size from listings
group by city, state
nhóm group by
nên đảm bảo rằng không có bản sao để không cần on duplicate key
. Tổng () + truy vấn con mà bạn đang thực hiện có vẻ như bạn chỉ đang cố gắng thực hiện một phép đếm (*).
Lỗi cụ thể mà bạn gặp phải là do size =sum (count). Trong loạt chèn, cách chính xác để thực hiện việc này sẽ là size =values (size), hãy xem tài liệu trên values()
.
CHỈNH SỬA:
Nếu nó thêm một mục nhập khác cho mỗi thành phố thì sẽ không có chỉ mục duy nhất về thành phố và trên khóa trùng lặp sẽ không làm gì cả.
nếu bạn thêm một chỉ mục duy nhất vào (thành phố, tiểu bang) thì bạn có thể thêm on duplicate key update size=values(size)
cho truy vấn trên và nó sẽ cập nhật từng bản ghi tại chỗ.