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

如果存在两个或多个条件,如何在SQLite中使用REPLACE命令,sqlite,Sqlite,我想更新表中存在的行,否则在单个查询中将其插入SQLite。从中我发现我们可以使用REPLACE命令来实现这一点 我想知道如果存在两种或两种以上的情况,如何使用替换: 示例: 如果我有带有以下记录的表表1: Name Type InitialValue FinalValue A 1 20 40 B 2 23 50 A 3 40

我想更新表中存在的行,否则在单个查询中将其插入SQLite。从中我发现我们可以使用
REPLACE
命令来实现这一点

我想知道如果存在两种或两种以上的情况,如何使用
替换

示例:
如果我有带有以下记录的表
表1

  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
,如果存在,则插入它

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

替换为表1(名称、类型、初始值、最终值)值 ('A',3,50,90),其中Name='A'和Type=3

错误是:

靠近“WHERE”:语法错误无法执行语句


我怎样才能达到我的目标?请帮助。

替换就像插入一样,它只是检查是否有重复的密钥以及是否有重复的密钥 它删除该行,并插入新的行,否则只插入

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

REPLACE INTO table1 (Name,Type,InitialValue,FinalValue) VALUES ('A',3,50,90 )
并且已经存在名称为'a'且类型为3的行,将替换该行

编辑: 快速备忘替换总是先删除后插入,所以在重载情况下使用它绝对不是一个好主意,因为它在删除后插入时需要独占锁

一些数据库引擎

INSERT ... ON DUPLICATE KEY UPDATE ...
sqlite 3没有,但如果插入失败,您可以尝试{}捕获


。我已将您的上述查询替换为测试(名称、类型、初始值、最终值)值('A',3,50,90);但它是在表中插入,而不是更新..这是否意味着如果我删除然后插入,速度也一样快?但没有任何“插入表”?我只想将所有表中的所有“word1”替换为“word2”?
INSERT ... ON DUPLICATE KEY UPDATE ...