如何删除Sqlite数据库中指定行之间的数据?
作者:FancyPig | 发布时间: | 更新时间:
问题场景
如果数据插入错了,我们只想删除某张表中的指定数据,比如删除第m行到第n行的数据应该怎么操作呢?
解决方案
为了方便演示,我们这里举例说明,这里的表格,我们不小心在插入数据时,id=4到id=6的内容和前面的id=1到id=3内容重复了,这里我们想删除应该如何操作?
| id | name |
| 1 | 猪猪侠 |
| 2 | 猪头 |
| 3 | 猪猪 |
| 4 | 猪猪侠 |
| 5 | 猪头 |
| 6 | 猪猪 |
| 7 | 猪老师 |
| 8 | 猪大侠 |
- 首先我们需要确认要删除的
id,通常你处理的数据肯定不会是2、3个,因此我们使用下面的语句,筛选出id为4-6之间的
SELECT * FROM "A" where id>= 4 AND id<=6
| id | name |
| 4 | 猪猪侠 |
| 5 | 猪头 |
| 6 | 猪猪 |

- 然后删除我们查询到的这些数据即可
delete from A where id in(SELECT id FROM "A" where id>= 4 AND id<=6)

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

- 小技巧:有些表设计不够规范,如果没有唯一的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

然后在进行删除
delete from A where id in(SELECT id FROM "A" limit 5)

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