删除A表的a列等于1的数据
	  
		|  代码如下 | 
		复制代码 | 
	  
	  
		| 
 Delete from A where exists (Select 1 from A where a=1) 
 | 
	  
	
上面的方法只适用于简单小数据量的批量数据删除了,如果是大批量数据删除我们可参考下面方法
 
	  
		|  代码如下 | 
		复制代码 | 
	  
	  
		| 
 Create PROCEDURE Batch_Delete  
@TableName nvarchar(100), --表名  
@FieldName nvarchar(100), --删除字段名  
@DelCharIndexID nvarchar(1000)  
as  
DECLARE @PointerPrev int  
DECLARE @PointerCurr int  
DECLARE @TId NVARCHAR(50), @sql NVARCHAR(1000) 
Set @PointerPrev = 1  
while (@PointerPrev < LEN(@DelCharIndexID))  
Begin  
Set @PointerCurr = CharIndex(',',@DelCharIndexID,@PointerPrev)  
if(@PointerCurr>0)  
Begin  
SET @TId = cast(SUBSTRING(@DelCharIndexID, @PointerPrev, @PointerCurr - @PointerPrev) As NVARCHAR(50))  
SET @sql = 'Delete From '+ @TableName +' Where '+ @FieldName + ' = '''+ @TID+''''  
Exec(@Sql)  
Print('======='+@TId+'=======sql'+@Sql)  
SET @PointerPrev = @PointerCurr + 1  
Print(@PointerPrev)  
End  
else  
Begin  
Print('break')  
Break  
End  
End  
--删除最后一个,因为最后一个后面没有逗号,所以在循环中跳出,需另外再删除  
SET @TId = cast(SUBSTRING(@DelCharIndexID, @PointerPrev, LEN(@DelCharIndexID) - @PointerPrev + 1) As NVARCHAR(50))  
SET @sql = 'Delete From '+ @TableName +' Where '+ @FieldName + ' = '''+ @TID+''''  
Exec(@Sql)  
Print('======='+@TId+'=======sql'+@Sql)  
GO 
 |