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

在数据库中,删除数据时,一般人都是直接写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

    原文作者:FxBilly
    原文地址: https://blog.csdn.net/guangmo0123/article/details/109353553
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞