日期:2014-05-19  浏览次数:20529 次

貌似麻煩的Update,歡迎新老CSDN
有一表Test
   UseName(char(10))     Type(char(10))     QTy(Int)
第一列 A                                           1                           10
第二列     A                                           1                           5
第三列 A                                           1                           8  
第四列 B                                             2                         10
.........
如果用Update
Update   Test   set   Qty=Qty+1   where   UseName= 'A '   and   Type= '1 '
則所有的UseName= 'A '   and    Type= '1 '   的Qty都會加1
但現在我要的是只需要其中的一列的Qty加1就可以
也就是如果第一列的Qty加1,第二列和第三列的Qty就不加1了
結果為:
   UseName(char(10))     Type(char(10))     QTy(Int)
第一列 A                                           1                           11(加1之後)
第二列     A                                           1                           5
第三列 A                                           1                           8  
第四列 B                                             2                         10
.........

請問這樣的SQL怎樣寫   ?
謝謝各位大俠.....

------解决方案--------------------
可能要用到游标了
------解决方案--------------------
update Test set Qty = Qty +1 from (select top 1 * from Test ) as A where A.UserName = Test.UserName
------解决方案--------------------
drop table Test
go
create table Test(UseName char(10),Type char(10),QTy Int)
insert into Test
select 'A ', '1 ',10
union all select 'A ', '1 ',5
union all select 'A ', '1 ',8
union all select 'B ', '2 ',10

set rowcount 1
Update Test
set Qty=Qty+1
where UseName= 'A ' and Type= '1 '
set rowcount 0

select * from Test
/*
UseName Type QTy
---------- ---------- -----------
A 1 11
A 1 5
A 1 8
B