当前位置: 代码迷 >> Sql Server >> sql怎么按条件删除大量数据(面试题)
  详细解决方案

sql怎么按条件删除大量数据(面试题)

热度:74   发布时间:2016-04-27 10:56:13.0
sql如何按条件删除大量数据(面试题)
今天碰到一个面试题:

有一个Student表有ID,Class,Name,Sex四个字段,要求删除Class =‘0903’,Sex =‘M' 的所有记录(满足条件的记录超过3万)

听说应该用分段处理,但是多次尝试都没有成功,所以向大侠请教!

------解决方案--------------------
按id分段删除.

DECLARE @i INT
SET @i=5000
DELETE STUDENT WHERE ID<@i AND Class ='0903' AND Sex ='M' 
WHILE @@ROWCOUNT>0
BEGIN
BEGIN TRAN
SET @[email protected]+5000
DELETE STUDENT WHERE ID<@i AND Class ='0903' AND Sex ='M'
COMMIT TRAN
END
------解决方案--------------------

SQL code
SET ROWCOUNT 100WHILE 1=1BEGIN    DELETE FROM Student WHERE lass ='0903' AND Sex ='M'    IF @@ROWCOUNT<100 BREAKENDWHILE 1=1BEGIN    DELETE TOP (100) FROM Student WHERE lass ='0903' AND Sex ='M'    IF @@ROWCOUNT<100 BREAKEND
------解决方案--------------------
SQL code
--2000 or 2005set rowcount 5000DELETE STUDENT WHERE Class ='0903' AND Sex ='M'WHILE @@ROWCOUNT>0BEGIN    DELETE STUDENT WHERE Class ='0903' AND Sex ='M'ENDset rowcount 0
  相关解决方案