有2个表/实体,非常简单的场景.
表诗人 - 专栏:id,诗人,国家
表国家 - 列:id,国家,计数
基本上,国家对诗人具有一对多的映射,自然.例如,来自60个国家的1000名诗人.诗人中的每一位诗人都被国家领域赋予一个国家,其中包含了一个国家的国家.
国家的伯爵领域包含了来自这个国家的诗人中的诗人数量.
我的问题是如何使用一个SQL查询来计算诗人中的国家诗人数量,然后更新该国家的相应计数?
我试过了:
UPDATE poets, nations SET nations.count = COUNT(poets.id) GROUP BY poets.nation HAVING poets.nation = nations.id
Run Code Online (Sandbox Code Playgroud)
但它给出了#1064错误.还尝试在某处组合WHERE子句但它仍然拒绝工作.
任何的想法?
Zed*_*Zed 42
使用子查询:
UPDATE nations
SET count = (
SELECT COUNT(id)
FROM poets
WHERE poets.nation = nations.id
GROUP BY id
);
Run Code Online (Sandbox Code Playgroud)
mik*_*ian 23
你不需要GROUP BY,cf.:
UPDATE nations SET count = (
SELECT COUNT(id) FROM poets
WHERE poets.nation = nations.id);
Run Code Online (Sandbox Code Playgroud)
或者更确切地说,对于GROUP BY,子查询将为没有诗人的国家返回NULL.如果没有GROUP BY,子查询在这种情况下将返回0.
| 归档时间: |
|
| 查看次数: |
41653 次 |
| 最近记录: |