【问题标题】:SQL - How do I update multiple records at the same time?SQL - 如何同时更新多条记录?
【发布时间】:2020-12-09 07:32:54
【问题描述】:
ALTER TABLE Store ADD TotalGoodsPrice INTEGER
CREATE VIEW V AS
SELECT Stock.Store_id,SUM(PRICE*COUNT) total FROM STOCK JOIN PRODUCT
ON STOCK.PRODUCT_CODE = PRODUCT.CODE
GROUP BY Store_id
UPDATE STORE SET STORE.TotalGoodsPrice = V.total
FROM STORE JOIN V ON v.STORE_ID = STORE.ID
所以我有这段代码来更新TotalGoodsPrice,我想根据Store.ID 更改TotalGoodsPrice 的每条记录,但它不会让我更改。我只想到了SELECT MAX(V.total),但这只是给了我最高的总数。
【问题讨论】:
标签:
mysql
sql
join
sum
sql-update
【解决方案1】:
我怀疑你想要update ... join 语法。想法是使用子查询从stock 和product 表中计算每个商店的总库存值,然后加入并更新store 表:
update store se
inner join (
select sk.store_id, sum(pt.price * sk.count) total
from stock sk
inner join product pt on pt.code = sk.product_code
) sk on sk.store_id = se.id
set se.totalgoodsprice = sk.total
我必须对每列所属的表做出一些假设。
请注意,存储此类派生信息通常不是一个好主意 - 然后您需要维护它,这可能很乏味。相反,创建视图可能更简单:
create view v_store as
select
se.*,
(
select sum(pt.price * sk.count)
from stock sk
inner join product pt on pt.code = sk.product_code
where sk.store_id = se.id
) totalgoodsprice
from store se