Czy coś tak prostego jak to działa?
insert into cities (city, state, size)
select city, state, count(*) as size from listings
group by city, state
group by
powinien upewnić się, że nie ma duplikatów, aby nie było potrzeby on duplicate key
. Wygląda na to, że sum() + podzapytanie, które robisz, po prostu próbujesz wykonać liczenie(*).
Konkretny błąd, który otrzymywałeś, był spowodowany przez size=sum(count). W partii wstaw prawidłowy sposób, aby to zrobić, to size=values(size), zobacz dokumentację na values()
.
EDYCJA:
Jeśli dodaje kolejny wpis dla każdego miasta, nie ma unikalnego indeksu w mieście, a na zduplikowanym kluczu i tak nic nie zrobi.
jeśli dodasz unikalny indeks na (miasto, stan), możesz dodać on duplicate key update size=values(size)
do powyższego zapytania i zaktualizuje każdy rekord na miejscu.