SQL删除特定范围内的记录

时间:2011-11-22 10:06:03

标签: sql sql-delete records

对于有经验的人来说,这可能是一个非常简单的问题,但我只是想知道在SQL表中删除特定范围之间的几百条记录的最安全的方法。

例如,我需要删除ID介于79和之间的行。 296:

我担心的是,如果我说删除带ID的所有内容(> 79&< 296),那么它可能会彻底擦除整个表格。

7 个答案:

答案 0 :(得分:99)

如果您使用Sql Server

delete from Table where id between 79 and 296

ID (>79 AND < 296)

所以使用这个:

delete from Table where id > 79 and id < 296

答案 1 :(得分:8)

您提供了条件ID(> 79和&lt; 296),然后答案是:

delete from tab
where id > 79 and id < 296

这与:

相同
delete from tab
where id between 80 and 295

如果id是整数。

全部回答:

delete from tab
where id between 79 and 296

这与:

相同
delete from tab
where id => 79 and id <= 296

注意区别。

答案 2 :(得分:1)

DELETE FROM table_name 
WHERE id BETWEEN 79 AND 296;

答案 3 :(得分:0)

如果在SQL Server中将其写为以下内容,那么除非该表中的所有值实际上都在这些值之间,否则不会有擦除数据库表的危险:

DELETE FROM [dbo].[TableName] WHERE [TableName].[IdField] BETWEEN 79 AND 296 

答案 4 :(得分:0)

  

我担心的是,如果我说使用ID删除evertything(&gt;&gt;&lt; 296)   然后它可能真的擦掉整个桌子......

那不会发生,因为你会有一个where子句。如果您有delete * from Table1 where id between 70 and 1296之类的语句,那么sql查询处理器将要做的第一件事就是扫描表并查找该范围内的那些记录,然后应用删除。

答案 5 :(得分:0)

您也可以将删除更改为选择*

并测试您的选择

所选记录与删除的记录相同

如果你不确定,你也可以在开始/回滚中包装你的语句 - 测试语句然后如果一切正常就删除回滚

例如

SELECT * FROM table 在79和296之间的身份

将显示与where匹配的所有记录 如果他们是您真正想要删除的需求,请使用

DELETE FROM table 在79和296之间的身份

您还可以创建一个触发器/捕获删除并将它们放入历史记录表

所以,如果你错误地删除了某些内容,你可以随时将其删除

(保持历史记录表记录不超过6个月或任何业务规则说明)

答案 6 :(得分:0)

您可以使用这种方式,因为在所有情况下,id都不能是连续的。

SELECT * 
FROM  `ht_news` 
LIMIT 0 , 30