有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子句,但它仍然拒绝工作。
有什么想法吗?
答案 0 :(得分:38)
使用子查询:
UPDATE nations
SET count = (
SELECT COUNT(id)
FROM poets
WHERE poets.nation = nations.id
GROUP BY id
);
答案 1 :(得分:22)