[英]MySQL: Count records from one table and then update another
有2個表/實體,非常簡單的場景。
表詩人 - 專欄:id,詩人,國家
表國家 - 列: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
);
你不需要GROUP BY,cf。:
UPDATE nations SET count = (
SELECT COUNT(id) FROM poets
WHERE poets.nation = nations.id);
或者更確切地說,對於GROUP BY,子查詢將為沒有詩人的國家返回NULL。 如果沒有GROUP BY,子查詢在這種情況下將返回0。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.