varios update una tabla subconsulta registros partir otra ejemplos datos consultas con actualizar sql mysql

update - MySQL: cuenta los registros de una tabla y luego actualiza otra



update de una tabla a otra oracle (2)

Conseguí 2 tablas / entidades, escenario muy sencillo.

Poetas de mesa - Columnas: id, poeta, nación

Naciones de mesa - Columnas: id, nación, conteo

Básicamente, las naciones a los poetas tienen un mapeo de uno a muchos, naturalmente. Por ejemplo, hay 1000 poetas de 60 naciones. Cada poeta en poetas está asignado a una nación por el campo de nación que contiene el id de una de las naciones en naciones .

El campo de conteo 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 recuento correspondiente de esa nación?

Lo intenté:

UPDATE poets, nations SET nations.count = COUNT(poets.id) GROUP BY poets.nation HAVING poets.nation = nations.id

Pero da el error # 1064. También trató de combinar la cláusula WHERE en algún lugar, pero todavía se niega a trabajar.

¿Alguna idea?


Simplemente no necesitas GROUP BY, cf .:

UPDATE nations SET count = ( SELECT COUNT(id) FROM poets WHERE poets.nation = nations.id);

O más bien, con GROUP BY, la subconsulta devolverá NULL para las naciones que no tienen poetas. Sin GROUP BY, la subconsulta devolverá 0 en este caso.


Utilice una subconsulta:

UPDATE nations SET count = ( SELECT COUNT(id) FROM poets WHERE poets.nation = nations.id GROUP BY id );