mysql和sqlserver删除指定条数的数据记录,mysql delete limit和sqlserver delete top

5 篇文章 0 订阅
1 篇文章 0 订阅

在数据库中,删除数据时,一般人都是直接写DELETE FROM [table] WHERE XXX=XXX,正常情况是没啥大问题的,只要WHERE条件不要写错了,但是有时候就是不小心失误,导致出现大问题,本人曾经就手贱过,一不小心就差点来个删表跑路了,还好有备份 [捂脸]。从此以后我在删除数据时就会尽量遵守如下规则:

【delete规则(强烈建议)】

强烈建议在删除数据时,如果知道要删除的数据条数,请显示的指明删除的数据条数,哪怕明知道删除的数据只有1条,也请指定删除数据的条数,如果不知道要删除的条数,那就预估一下要删除数据条数的上限,填写该上限值。mysqlsqlserver都支持,不过还是有点区别的,具体如下:

【带来的好处】

  1. 降低失误的可能,因为最多也只会删除指定条数的数据,减小误删数据的范围,降低带来的隐患;
  2. 提升性能,指定条数后,一旦数据库引擎删除的条数达到指定值后,就会停止往下执行,避免多余的消耗;

【mysql】

-- 按默认排序,删除1条数据
DELETE FROM tableName WHERE xxx=xxx LIMIT 1;

-- 按指定的排序,删除1条数据
DELETE FROM tableName WHERE xxx=xxx ORDER BY DESC id LIMIT 1;

【sqlserver】

-- 按默认排序,删除1条数据
DELETE TOP (1) FROM tableName WHERE xxx=xxx;

sqlserver不支持在delete中添加order by排序信息,所以如果需要按指定排序进行指定条数的数据删除,只能用如下方法了。

-- 按指定的排序,删除1条数据
DELETE FROM tableName 
WHERE id IN (SELECT TOP (1) id FROM tableName  WHERE xxx=xxx ORDER BY id DESC);

【其它】

如果是删除全表数据,请不要用delete,请尽量使用TRUNCATE TABLE tableName

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值