mysql8中,删除数据,只保留500条数据

本文讨论了在MySQL中利用NOTIN和LIMIT进行数据删除的技巧,以及版本兼容性问题。
摘要由CSDN通过智能技术生成

场景:

需要删除数据库中的数据,并且只保留500条。

之前可以用两条sql语句,先查询当前表有多少条数据,然后计算需要删除的数据,在用limit删除指定的数据。

两种方法

第一种方法

一、先查询表中数据

SELECT  COUNT(1)  FROM  your_table;

二、删除指定的数据。  3411550是第一步查询的数据-保留的数据。

DELETE FROM your_table LIMIT 3411550;

第一种方法

----------------------------使用not in,保留一定的数据---------------------------

一、删除数据之前,可以用in查询,查询5042499条数据是否正常,因为delete删除之后容易造成数据的误删。

SELECT count(*) FROM `wfc_process` WHERE ID  IN (SELECT s.ID FROM (SELECT ID FROM `wfc_process` LIMIT 0,500) AS s);

二、使用not in,保留5042499条数据,删除不在这5042499以内的数据。

​
DELETE FROM your_table
WHERE ID  NOT IN (
    SELECT s.ID FROM (
        SELECT ID FROM `wfc_process` LIMIT 0,5042499) AS s);

​

存在的问题:

使用

DELETE FROM your_table

WHERE id NOT IN (

  SELECT id FROM your_table ORDER BY id DESC LIMIT 500

);

存在This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery',limit不能使用在in中,只能通过as多加一层。

  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值