我有兩張桌子
- 帶有欄位的產品表(id,category_id)
- 帶有欄位的類別表(id,num_of_products)
產品表包含不同類別的多個產品。而且我知道如何計算每個類別中的產品使用
SELECT category_id, COUNT(product.id) as count FROM product GROUP BY category_id
但是如何使用帶有 SELECT .... 的結果的單個 sql 查詢來更新 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
有什么建議 ?
uj5u.com熱心網友回復:
試試這個查詢:
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;
如果你想做UPDATEwith JOIN,你必須先做JOIN然后再做 with SET。如果有條件則需要在WHERE后面加上SET。例如,假設您不想更新某個類別,那么可能:
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);
演示小提琴
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/418291.html
標籤:
上一篇:MariaDB排序字串值與派系
