问题场景
如果数据插入错了,我们只想删除某张表中的指定数据,比如删除第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 | 自由者联盟 |
![图片[1]-如何删除Sqlite数据库中指定行之间的数据?-FancyPig's blog](https://www.cvv-goods.com/wp-content/uploads/2023/03/20220920102529466.webp)
- 然后删除我们查询到的这些数据即可
delete from A where id in(SELECT id FROM "A" where id>= 4 AND id<=6)
![图片[2]-如何删除Sqlite数据库中指定行之间的数据?-FancyPig's blog](https://www.cvv-goods.com/wp-content/uploads/2023/03/20220920102709434.webp)
然后查看发现数据中第4行到第6行内容已经移除
![图片[3]-如何删除Sqlite数据库中指定行之间的数据?-FancyPig's blog](https://www.cvv-goods.com/wp-content/uploads/2023/03/20220920102737898.webp)
- 小技巧:有些表设计不够规范,如果没有唯一的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](https://www.cvv-goods.com/wp-content/uploads/2023/03/20220920102329547.webp)
然后在进行删除
delete from A where id in(SELECT id FROM "A" limit 5)
![图片[5]-如何删除Sqlite数据库中指定行之间的数据?-FancyPig's blog](https://www.cvv-goods.com/wp-content/uploads/2023/03/20220920102602442.webp)
然后查看,发现就剩下第5行之后的数据了
![图片[6]-如何删除Sqlite数据库中指定行之间的数据?-FancyPig's blog](https://www.cvv-goods.com/wp-content/uploads/2023/03/20220920102629167.webp)
© 版权声明
THE END
暂无评论内容