日期:2014-05-17  浏览次数:20453 次

关于SQL插入与删除语句
SQL中,A表与B表的结构是不相同的,将A表的记录按条件查询出来,放入DataTable中,然后获取相应的值插入到B表中;同时删除A表中的被查记录.例:
A表中的字段
ID   Name  Age  Address  
1    小李   29    北京      
2    小王   26    天津     这条应该删除
3    小刘   30    上海      
4    小张   31    深圳     这条应该删除    
5    小红   26    深圳

B表中的字段
ID  AID   Name  Age  Address School
1   2    小王   26    天津      清华
2   4    小张   31    深圳      北大

是按ID来删除吗?如果是,请问这条SQL语句怎么写?
提示:B表中可是多出了一列School列哦,上面只是个例子,给出了A表中ID为2和4的数据,完全有可能是1和3,1和5等等,ID绝对不是固定的.A表中的ID列为自增长列.

------解决方案--------------------
删除的SQL就这么写好了
--检索
--select * from A where ID in (select AID from B)
--删除
--delete from A where ID in (select AID from B)
------解决方案--------------------
引用:
SQL中,A表与B表的结构是不相同的,将A表的记录按条件查询出来,放入DataTable中,然后获取相应的值插入到B表中;同时删除A表中的被查记录.例:
A表中的字段
C# code?123456ID   Name  Age  Address  1    小李   29    北京      2    小王   26    天津     <span style="co……


什么叫获取相应的值?相应是什么意思?
------解决方案--------------------
引用:
你要插入B 表 那么A表的ID 肯定知道,或者放到存储过程里面来实现。 要么写两个方法,一个插入一个删除,这样要用事务来控制下。


这位仁兄说的好,这种一增一删的用事务处理,代码如下


Select * from dbo.A where ID=2
Begin TransAction
declare @ID int
declare @error int
set @ID=1   --A表ID
set @error=0
Insert into dbo.B(AID,Name,Age,Address) select * from dbo.A where ID=@ID
set @error=@error+@@error
Delete from dbo.A where ID=@ID
set @error=@error+@@error
if(@error>0)
  begin 
    print('Failed')
    rollback TransAction  
  end
else 
Begin
  print('Succeed')
  Commit TransAction
End