Tsql 如果找到记录,则使用running total在SQLite中向上插入
我想在SQLite中将数据向上插入到一个表中,但要更新的列(如果找到记录)必须是一个运行总数。我使用的是参数化查询,语法有问题 到目前为止,我的理解是,合并是在SQLite中执行upsert的方法,因此这是我到目前为止得到的框架:Tsql 如果找到记录,则使用running total在SQLite中向上插入,tsql,sqlite,parameter-passing,Tsql,Sqlite,Parameter Passing,我想在SQLite中将数据向上插入到一个表中,但要更新的列(如果找到记录)必须是一个运行总数。我使用的是参数化查询,语法有问题 到目前为止,我的理解是,合并是在SQLite中执行upsert的方法,因此这是我到目前为止得到的框架: INSERT OR REPLACE INTO TABLE (ID, Quantity) VALUES (:ID, COALESCE(Quantity + :Quantity_change, :Quantity_change) 换句话说,如果找到记录,则将数量更改
INSERT OR REPLACE INTO TABLE (ID, Quantity)
VALUES (:ID, COALESCE(Quantity + :Quantity_change, :Quantity_change)
换句话说,如果找到记录,则将数量更改添加到当前数量,否则插入数量更改作为数量编号的记录
在SQL server中,它可以完美地处理合并查询:
MERGE ......
.....
WHEN MATCHED THEN UPDATE SET Quantity = Quantity + :Quantity_change
WHEN NOT MATCHED THEN INSERT (..Quantity), VALUES (.. :Quantity_change);
好的,这对我来说是有效的:
INSERT OR REPLACE INTO TABLE (ID, Quantity)
VALUES (:ID,
COALESCE(
(SELECT Quantity FROM TABLE WHERE ID = :ID) + :Quantity_change, :Quantity_change));
感谢SO链接的帮助