2

我正在尝试将数据插入可能已经存在的 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)
4

1 回答 1

1

在 SQLite 中,如果您在表上定义了主键,则可以做INSERT OR REPLACE而不是正常操作。INSERT如果表中的另一行已存在您尝试插入的主键,则会被覆盖。

所以,如果你在表上创建了一个由word1and组成的复合主键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
于 2013-11-02T21:09:02.073 回答