有2个表/实体,非常简单的场景。
表 诗人 -列:id,诗人,国家
表格 国家 -栏:编号,国家,计数
基本上, 国家 对 诗人 的映射自然是一对多的。例如,有来自60个国家的1000名诗人。在每个诗人 的诗人 被包含在国家之一的id民族领域分配给一个民族 国家 。
国家 的计数字段包含来自该国家的诗人中的 诗人 人数。
我的问题是如何仅使用一个SQL查询来按国家对 诗人 的人数进行计数,然后更新该国家的相应人数?
我试过了:
UPDATE poets, nations SET nations.count = COUNT(poets.id) GROUP BY poets.nation HAVING poets.nation = nations.id
但是它给出了#1064错误。还尝试在某处组合WHERE子句,但它仍然拒绝工作。
任何的想法?
使用子查询:
UPDATE nations SET count = ( SELECT COUNT(id) FROM poets WHERE poets.nation = nations.id GROUP BY id );