如果有两个或更多条件,如何在SQLite中使用REPLACE命令

如果有两个或更多条件,如何在SQLite中使用REPLACE命令,第1张

概述我想更新一行,如果它存在于表中,否则在单个查询中将其插入SQLite中.从 SQLite documentation我发现我们可以使用REPLACE命令来实现这一目标. 如果有两个或更多条件,我想知道如何使用REPLACE: 例: 如果我有表TABLE1以下记录: Name Type InitialValue FinalValue A 1 20 我想更新一行,如果它存在于表中,否则在单个查询中将其插入sqlite中.从 SQLite documentation我发现我们可以使用REPLACE命令来实现这一目标.

如果有两个或更多条件,我想知道如何使用REPLACE:

例:
如果我有表table1以下记录:

name   Type   InitialValue  FinalValue   A      1          20           40   B      2          23           50   A      3          40           60   C      3          54           70

这里名称和类型的组合将是唯一的.

我想设置initialvalue = 50和finalvalue = 90,其中name = A和Type = 3(如果存在),否则插入它.

我正在使用此命令,但它给出了此错误:

REPLACE INTO table1 (name,Type,InitialValue,FinalValue) VALUES
(‘A’,3,50,90 ) WHERE name=’A’ AND Type = 3 ;

错误是:

near “WHERE”: Syntax error Unable to execute statement

我怎样才能实现目标?请帮忙.

解决方法 replace就像insert一样,它只是检查是否有重复的键,如果是的话
它会删除该行,并插入新行,否则只会插入

如果存在(名称,类型)的唯一索引并且键入以下命令,则可以执行此 *** 作

REPLACE INTO table1 (name,FinalValue) VALUES ('A',90 )

并且已存在name =’A’且Type = 3的行将被替换

http://www.sqlite.org/lang_createindex.html

CREATE UNIQUE INDEX IDx_name_type ON table1(name,Type)

编辑:
快速说明 – REPLACE总是DELETES然后INSERT,所以在重载时使用它永远不是一个好主意,因为它在删除时需要独占锁定,然后在插入时

一些数据库引擎有

INSERT ... ON DUPliCATE KEY UPDATE ...

sqlite 3没有,但如果插入失败,你可以尝试try}} catch

http://blog.client9.com/2007/11/sqlite3-and-on-duplicate-key-update.html

SQLite UPSERT – ON DUPLICATE KEY UPDATE

总结

以上是内存溢出为你收集整理的如果有两个或更多条件,如何在SQLite中使用REPLACE命令全部内容,希望文章能够帮你解决如果有两个或更多条件,如何在SQLite中使用REPLACE命令所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1156103.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存