假设我有一车杂货,每件商品都有一个唯一的 ID。当有人单击“购买”时,将发送一个数组,其中包含该购物车中每个项目的对象。购物车各不相同,因此有时可能是 2 件商品,有时是 6 件商品,等等。
例子:
[{id: 1, amt_purchased: 3}, {id: 2, amt_purchased: 4}]
我需要我的 SQL 表“可用的杂货商品”根据购买的商品进行更新。
对于一件杂货,我会使用以下内容:
UPDATE available
SET amt_avail = amt_avail - 3
WHERE produce_id = 1
由于我现在有多个项目,我怎样才能让查询针对每个已购买的项目运行?或者作为一个将根据购买的商品数量进行调整的大规模查询?
我的项目是 Ionic/AngularJs 和 NodeJs、Express、MassiveJs。
谢谢大家!还是菜鸟,所以我很难解释我需要什么。
最佳答案
PostgreSQL 有一个 excellent feature UPDATE ... FROM ...;
提供了一种在另一个表上更新一个表的便捷方法。第二个出色的功能 - 您可以在此查询中使用伪表 VALUES
:
UPDATE available a
SET amt_available = a.amt_available + v.amt_available
FROM (
VALUES (1, 25), (3, 15), (7, -55) -- just pass required values
) AS v (produce_id, amt_available)
WHERE a.produce_id=v.produce_id;
这是一个用于检查想法的 SQLFiddle - http://sqlfiddle.com/#!17/04f24/22
关于javascript - 对数组中的每个对象运行 PostgreSQL UPDATE 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44874288/