【问题标题】: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 语法。想法是使用子查询从stockproduct 表中计算每个商店的总库存值,然后加入并更新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
    

    【讨论】:

    • 非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多