预发光:
我在 Sqlite3-DB 中有表“基线”。 表“基线”有以下列:
- 单词
- 柜台
问题: 任何想法如何让 sqlite3 引擎(如果它更有效)为我做以下操作:
- 如果表“baseline”已经有一个主键为“word”的元素,则插入时不会替换该行,而是在旧计数器和新计数器之间进行添加。
示例
执行以下插入命令后:
"INSERT INTO baseline(word, counter) VALUES 'bla', 1; "
"INSERT INTO baseline(word, counter) VALUES 'bla', 1; "
我想从数据库中获取以下数据:
>>> "SELECT * FROM baseline;"
'("bla", 2)'
提前致谢=)
请您参考如下方法:
如果单词是主键,即:
CREATE TABLE baseline (word TEXT PRIMARY KEY, counter INTEGER);
那么下面的方法就可以了:
INSERT OR REPLACE INTO baseline VALUES (
'foo',
COALESCE((SELECT counter FROM baseline WHERE word='foo'), 0) + 1
);
COALESCE() 函数在表中存在单词时返回计数,否则返回 0。
