簡體   English   中英

SQL 更新基於 COUNT

[英]SQL UPDATE base on COUNT

我有兩張桌子

  • 帶有字段的產品表(id,category_id)
  • 帶有字段的類別表(id,num_of_products)

產品表包含不同類別的多個產品。 而且我知道如何計算每個類別中的產品使用

SELECT category_id, COUNT(product.id) as count FROM product GROUP BY category_id

但是,如何使用單個 sql 查詢和 SELECT.... 的結果更新 category.num_of_product ? 我已經嘗試過,但無法弄清楚正確的語法!

UPDATE c
SET num_of_products = count
FROM category c
INNER JOIN 
(SELECT category_id as id, COUNT(product.id) as count FROM product GROUP BY category_id) d ON c.id = d.id

有什么建議么?

試試這個查詢:

UPDATE category c 
JOIN (SELECT category_id, COUNT(id) cnt 
        FROM product GROUP BY category_id) p
ON c.id=p.category_id
SET c.num_of_products=cnt;

如果你想用JOINUPDATE ,你必須先做JOIN然后再用SET 如果有條件,則需要在SET之后添加WHERE 例如,假設您不想更新某個類別,那么可能:

UPDATE category c 
JOIN (SELECT category_id, COUNT(id) cnt 
        FROM product GROUP BY category_id) p
ON c.id=p.category_id
SET c.num_of_products=cnt
WHERE c.id NOT IN (1,2);

演示小提琴

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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