簡體   English   中英

MySQL:計算一個表中的記錄,然后更新另一個表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM