Tengo 2 tablas/entidades, escenario muy sencillo.MySQL: Contar los registros de una tabla y luego actualizar otra
Tabla poetas - Columnas: ID, poeta, nación
Tabla naciones - Columnas: ID, nación, recuento
Básicamente, naciones a poetas tiene un mapeo de uno para muchos, naturalmente Por ejemplo, hay 1000 poetas de 60 naciones. Cada poeta en poetas se asigna a una nación por el campo nación que contiene la identificación de una de las naciones en naciones.
El campo de recuento de naciones contiene el número de poetas en poetas de esta nación.
Mi pregunta es cómo usar solo una consulta SQL para contar el número de poetas por nación en poetas y luego actualizar el conteo correspondiente de esa nación?
me trataron:
UPDATE poets, nations SET nations.count = COUNT(poets.id) GROUP BY poets.nation HAVING poets.nation = nations.id
pero da # 1064 de error. También intenté combinar la cláusula WHERE en alguna parte, pero todavía se niega a funcionar.
¿Alguna idea?
¡Gracias, eso funciona! –
tenga en cuenta que para tablas muy grandes (más de 500,000 registros) esto podría ser muy lento. – dusoft
Además, si naciones.count no puede contener nulos, esto puede generar advertencias. Use un IFNULL para protegerse de esto. ACTUALIZAR naciones SET count = IFNULL ((SELECT COUNT (id) FROM poetas WHERE poetas.nation = nations.id GROUP BY id), 0); –