Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MySQL INSERT INTO / ON DUPLICATE KEY z problemem z instrukcją SELECT

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wykonywanie wielu zapytań SQL w jednej instrukcji z PHP

  2. usuń pustą linię wydrukowaną z wyjścia zapytania ula za pomocą pythona

  3. Nie mogę wysłać pobranych danych do mojego strumienia socket.io?

  4. Jedna kolumna tabeli SQL, kolumna będąca identyfikatorem - czy to szalone?

  5. Czy występuje buforowanie MySQL, jak to naprawić?