gpt4 book ai didi

SQLite INSERT OR IGNORE 不会忽略重复项

转载 作者:行者123 更新时间:2023-12-05 02:49:17 34 4
gpt4 key购买 nike

我正在编写一个 java 程序来合并两个具有相同模式的数据库。这是 SQLite 或我的查询的问题,而不是 Java 代码的问题,因为我能够在 DB Browser 应用程序中准确地复制它。

我有 2 个数据库:一个正在合并,一个是目的地。

我最初连接到正在合并的数据库,然后将目标数据库连接为“dest”。我发出以下查询来复制数据:

INSERT or IGNORE into dest.AnalogInput SELECT * from AnalogInput where timestamp >= 1600824664131000000 AND timestamp <= 1600824664131000000

这工作正常并插入数据。如果我对相同的数据再次运行它,它会在目标数据库中插入一个副本。我认为“OR IGNORE”的目的是为了防止重复?是我的查询不正确还是我对 OR IGNORE 的理解不正确?

编辑:是的,我知道时间戳是相同的 - 这是一个通用查询,我只是在单个时间戳上使用几个样本进行测试。

谢谢!

最佳答案

INSERT OR IGNORE 仅在表中存在唯一约束时才有效。
因为没有而且你不能添加任何东西,因为 SQLite 不是那么灵活,所以做你想做的唯一方法是这样的:

INSERT or IGNORE INTO dest.AnalogInput 
SELECT * FROM AnalogInput WHERE ....
EXCEPT
SELECT * FROM dest.AnalogInput

关于SQLite INSERT OR IGNORE 不会忽略重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64053514/

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