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