我在CATEGORY TABLE中有3列用于在另一个表PRODUCTS中存储预先计算的记录计数。
CATEGORY(c_id,name,c30,c31,c32)
c30 =新产品的数量(价值30) 二手产品的c31数量(值31) c32计算受损产品(值32)
PRODUCT(p_id,c_id,name,condition)
条件可以是30,31或32。
我正在考虑编写一个UPDATE语句,因此它将更新相应的类别计数。
Althogh下面的语句在语法错误,但我正在寻找类似的解决方案。
select case product.condition
when 30 then update category set category.c30=category.c30+1 where category.c_id=product.category3
when 31 then update category set category.c31=category.c31+1 where category.c_id=product.category3
when 32 then update category set category.c32=category.c32+1 where category.c_id=product.category3
end case
from product
where product.c_id=12
任何建议!
答案 0 :(得分:2)
你可以这样做:
UPDATE CATEGORY c
INNER JOIN
(
SELECT
c_id,
SUM(CASE WHEN `condition` = 30 THEN 1 ELSE 0 END) c30,
SUM(CASE WHEN `condition` = 31 THEN 1 ELSE 0 END) c31,
SUM(CASE WHEN `condition` = 32 THEN 1 ELSE 0 END) c32
FROM product
GROUP BY c_id
) p ON c.c_id = p.c_id
SET c.c30 = p.c30,
c.c31 = p.c31,
c.c32 = p.c32;
答案 1 :(得分:0)
您可以加入这两个表,然后更新同一个连接查询中的值。