我正在尝试将数据插入到可能已存在的sqlite数据库中。如果它存在,我想添加它(不替换!)。我不确定该怎么做。
类似的东西(不确定我的语法是否正确)
case
when exists(select * from Link where word1='%s' and word2='%s')
then update Link set n = %d + (select n from Link where word1='%s' and word2='%s')
else
insert into Link values('%s', '%s', %d)
答案 0 :(得分:1)
在SQLite中,如果您在桌面上定义了主键,则可以INSERT OR REPLACE
而不是普通INSERT
。如果表中的另一行已经存在,并且您尝试插入主键,则会被覆盖。
因此,如果您在桌面上制作了由word1
和word2
组成的复合主键,则可以执行以下操作:
INSERT OR REPLACE INTO link (word1, word2, n)
SELECT
x.word1, x.word2, x.n + COALESCE(l.n, 0)
FROM ( SELECT '%s' AS word1, '%s' AS word2, %d AS n ) x
LEFT JOIN link l ON x.word1 = l.word1 AND x.word2 = l.word2