gpt4 book ai didi

SQLite Insert OR update 不丢失记录数据

转载 作者:行者123 更新时间:2023-12-03 17:43:58 25 4
gpt4 key购买 nike

我有一个表“test”,主键在“id &”lang”上

╔════╦══════╦══════╦═══════╗
║ id ║ lang ║ test ║ test2 ║
╠════╬══════╬══════╬═══════╣
║ 1 ║ zh ║ lol3 ║ lol4 ║
║ 1 ║ en ║ lol ║ qsdf ║
╚════╩══════╩══════╩═══════╝

我想插入或更新但是因为你不能做 IF 语句我遗漏了 INSER OR REPLACE INTO

当我运行查询时:

INSERT OR REPLACE INTO test (id,lang,test) VALUES (1,'en','zaki')

我明白了

╔════╦══════╦══════╦════════╗
║ id ║ lang ║ test ║ test2 ║
╠════╬══════╬══════╬════════╣
║ 1 ║ zh ║ lol3 ║ lol4 ║
║ 1 ║ en ║ zaki ║ <null> ║
╚════╩══════╩══════╩════════╝

它删除记录并插入一个包含可用数据的新记录(如 sqlite 状态的文档。)但是我想保留 test2 的值(但不知道我需要保留 test2 的值)我只知道要替换哪个值而不是保留哪个值。是否有可能不丢失我通过的数据(在 1 个查询中)。

最佳答案

最直接的方法是有条件地使用两个查询,例如 INSERT OR IGNORE 之后有条件地使用 UPDATE,但是如果您坚持使用单个查询,则可以尝试子查询:

INSERT OR REPLACE INTO test (id, lang, test, test2)
VALUES (1, 'en', 'zaki',
(SELECT test2 FROM test WHERE id=1 AND lang='en'));

例子:

sqlite> create table test(id, lang, test, test2, primary key(id,lang));
sqlite> insert into test select 1,'zh','lol3','lol4';
sqlite> insert into test select 1,'en','lol','qsdf';
sqlite> insert or replace into test(id,lang,test,test2) values(1,'en','zaki', (select test2 from test where id=1 and lang='en'));
sqlite> select * from test;
1|zh|lol3|lol4
1|en|zaki|qsdf

关于SQLite Insert OR update 不丢失记录数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22305806/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com