如何删除Sqlite数据库中指定行之间的数据?

问题场景

如果数据插入错了,我们只想删除某张表中的指定数据,比如删除第m行到第n行的数据应该怎么操作呢?

解决方案

为了方便演示,我们这里举例说明,这里的表格,我们不小心在插入数据时,id=4id=6的内容和前面的id=1id=3内容重复了,这里我们想删除应该如何操作?

idname
1猪猪侠
2猪头
3猪猪
4猪猪侠
5猪头
6猪猪
7猪老师
8猪大侠
数据表A
  • 首先我们需要确认要删除的id,通常你处理的数据肯定不会是2、3个,因此我们使用下面的语句,筛选出id为4-6之间的
SELECT * FROM "A" where id>= 4 AND id<=6
idname
4猪猪侠
5猪头
6猪猪
图片[1]-如何删除Sqlite数据库中指定行之间的数据?-FancyPig's blog
  • 然后删除我们查询到的这些数据即可
delete from A where id in(SELECT id FROM "A" where id>= 4 AND id<=6)
图片[2]-如何删除Sqlite数据库中指定行之间的数据?-FancyPig's blog

然后查看发现数据中第4行到第6行内容已经移除

图片[3]-如何删除Sqlite数据库中指定行之间的数据?-FancyPig's blog
  • 小技巧:有些表设计不够规范,如果没有唯一的ID,我们可以通过rowid来进行定位(每张表隐藏的且自增的)
SELECT rowid FROM "A" where id>= 4 AND id<=6

拓展

当然,您还可以删除A表前m行数据,方法类似

delete from A where id in(SELECT id FROM "A" limit m)

比如我们,我们删除前5行数据

我们先搜索前5行的数据

SELECT * FROM "A" limit 5
图片[4]-如何删除Sqlite数据库中指定行之间的数据?-FancyPig's blog

然后在进行删除

delete from A where id in(SELECT id FROM "A" limit 5)
图片[5]-如何删除Sqlite数据库中指定行之间的数据?-FancyPig's blog

然后查看,发现就剩下第5行之后的数据了

图片[6]-如何删除Sqlite数据库中指定行之间的数据?-FancyPig's blog
© 版权声明
THE END
喜欢就支持一下吧
点赞5赞赏 分享
评论 共3条

请登录后发表评论