一尘不染

MySQL:从一个表中计数记录,然后更新另一个表

mysql

有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子句,但它仍然拒绝工作。

任何的想法?


阅读 302

收藏
2020-05-17

共1个答案

一尘不染

使用子查询:

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