sql - 插入或替换为旧值的总和

标签 sql sqlite cordova

我正在使用 PhoneGap 构建库存应用程序。因为我有一个用于库存管理的模块 STOCK。

股表查询

CREATE TABLE STOCK (
    sto_id INTEGER PRIMARY KEY AUTOINCREMENT,
    pro_id INTEGER FOREIGNKEY REFERENCES PRODUCT(pro_id) UNIQUE,
    quantity TEXT
)

插入或替换查询

INSERT OR REPLACE INTO STOCK (pro_id,quantity) VALUES ("1","5");

此查询没有任何问题,它运行良好,但我想用新值更新旧值的总和。

例子:

pro_id quantity   
1       5

这是现有记录,所以现在当我将触发上面的查询以获取数量为 3 的新交易时,数量应为 (5 (old) + 3 (new) ) = 8。

所以在更新记录后它看起来像。

pro_id quantity   
1       8

我怎样才能解决这个问题。或者让我知道我是否走错了路。 谢谢。

最佳答案

其实我并不是这个解决方案的真正创始人。真正的英雄是Daverandom在他的帮助下,我解决了我的问题。

他建议我follow this解决方案,这对找到我的解决方案很有帮助。

旧查询看起来像

INSERT OR REPLACE INTO STOCK (pro_id,quantity) VALUES ("1","5"); 

新查询看起来像

INSERT OR IGNORE INTO STOCK (pro_id,quantity) VALUES (1,0) ; 
UPDATE STOCK SET quantity = quantity + 2 WHERE pro_id=1;

更新:

如果您不在 UPDATE 中添加 WHERE pro_id="val",那么它将更新所有行。 这样就会产生合适的结果。

当用户第一次触发查询时,数量将为 2,当您第二次触发相同查询时,数量将为 4。

因此,我们可以在每次更新时更改该值。

再次感谢 Daverandom。

关于sql - 插入或替换为旧值的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19156492/

相关文章:

python - 将元组列表更改为字典(pythonic 方式)

android PhoneGap FileTransfer.download() 收到错误代码 3

sql - 一行基本 SQL Pivot?

SQL - 计算遗漏结果的数量

Java/SQL 字符串操作使 "Foo".equals ("Bar???")

android - SQLite读取所有数据操作

ios - Cordova iOS InAppBrowser 地址栏选项

ios - Phonegap iOS : Share saved image/Retrieve last saved image file URI

MySQL ORDER BY + LIMIT + OFFSET 语句 : how to OFFSET firts and only then sort with ORDER BY

sql - 使用子查询和连接