Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tsql 如果找到记录,则使用running total在SQLite中向上插入_Tsql_Sqlite_Parameter Passing - Fatal编程技术网

Tsql 如果找到记录,则使用running total在SQLite中向上插入

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) 换句话说,如果找到记录,则将数量更改

我想在SQLite中将数据向上插入到一个表中,但要更新的列(如果找到记录)必须是一个运行总数。我使用的是参数化查询,语法有问题

到目前为止,我的理解是,合并是在SQLite中执行upsert的方法,因此这是我到目前为止得到的框架:

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链接的帮助