怎么实现sqlite更新数据库表,数据存在则更新,没有则插入,数据库原来有但是新的数据没有则删除原数据
重点是怎么删除。比如本地一张表中存放的缓存数据,服务器的数据变化了,本地更新缓存的时候获取服务器数据,如果本地数据有这条数据就更新,没有就插入,如果本地有一条数据是服务器...
重点是怎么删除。比如本地一张表中存放的缓存数据,服务器的数据变化了,本地更新缓存的时候获取服务器数据,如果本地数据有这条数据就更新,没有就插入,如果本地有一条数据是服务器数据库中所没有的,就从本地把这条数据删除。怎么实现?
展开
1个回答
推荐于2017-11-21
展开全部
假设A是本地表,B是服务器的表,主键是KEY
//从A中删除B表中没有的数据
DELETE FROM A WHERE A.KEY NOT IN (SELECT B.KEY FROM B)
//按照B的数据更新(或插入)A
INSERT OR REPLACE INTO A(KEY, Column1) SELECT B.Key,B.Column1 FROM B WHERE B.KEY=A.KEY
//从A中删除B表中没有的数据
DELETE FROM A WHERE A.KEY NOT IN (SELECT B.KEY FROM B)
//按照B的数据更新(或插入)A
INSERT OR REPLACE INTO A(KEY, Column1) SELECT B.Key,B.Column1 FROM B WHERE B.KEY=A.KEY
更多追问追答
追问
多谢您的思路,再劳烦问一下,如果获取服务器的数据返回json,解析成list之后该怎么实现上述删除的功能?就是这句DELETE FROM A WHERE A.KEY NOT IN 后面的条件应该是什么呢?
追答
在旧list中循环每一条,如果此条数据无法在新list中找到,说明被删除了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询