MySQL:计算一个表中的记录,然后更新另一个表

时间:2009-08-01 08:33:35

标签: sql mysql

有2个表/实体,非常简单的场景。

诗人 - 列:id,poet,nation

国家 - 列:id,国家,计数

基本上,民族诗人自然会有一对多的映射。例如,来自60个国家的1000名诗人。 poets 中的每位诗人都被国家字段分配给一个国家,其中包含国家中某个国家的ID。

国家的点数字段包含来自该国家的诗人中的诗人数量。

我的问题是如何在 poets 中使用一个SQL查询来按国家计算诗人数量,然后更新该国家的相应计数?

我试过了:

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

但它给出了#1064错误。还试图在某处组合WHERE子句,但它仍然拒绝工作。

有什么想法吗?

2 个答案:

答案 0 :(得分:38)

使用子查询:

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

答案 1 :(得分:22)