我正在编写一个模拟应用程序和魔杖,如果它们存在,则将值添加到表中,或者只是将它们作为新值插入。
示例表:
CREATE TABLE "time_table" ("time_abs" INTEGER UNIQUE , "volume" DOUBLE);
INSERT INTO "time_table" ("time_abs","volume") VALUES (5,20);
这是我想要做的:
time_abs=5 volume=25
我找到了Eric B的回答(click),但是我不能添加这样的东西:
UPDATE time_table SET volume=volume+25
感谢您的关注,祝您度过愉快的一天。
答案 0 :(得分:1)
如果记录已存在,则第一个SELECT计算新值。 如果记录不存在,则返回否结果。
如果记录不存在,则第二个SELECT返回要使用的值。
将两个SELECT与UNION ALL组合为我们提供一个或两个记录。 使用LIMIT 1,只返回第一个。
然后可以将这一条记录插入INSERT语句:
INSERT OR REPLACE INTO time_table(time_abs, volume)
SELECT time_abs, volume + 25 FROM time_table WHERE time_abs = 5
UNION ALL
SELECT 5, 25
LIMIT 1;