以下是我的sql語句:create table tb([ID] [int] IDENTITY (1, 1) NOT NULL  constraint pk_tb primary key,ProductNo nvarchar(10),ProDate nvarchar(10),Num int,StkNum int)insert tb(ProductNo,Prodate,Num,StkNum)
select   '001' as Pno, '2005/01/01' as Pdate, 100, 0 union allselect   '002' as Pno, '2005/01/01' as Pdate, 100, 0 union all
select   '001' as Pno, '2005/02/01' as Pdate ,  50,           0 union all
select   '002' as Pno, '2005/02/01' as Pdate ,  50,           0 union all
select   '001' as Pno, '2005/03/01' as Pdate   ,200,          0 union all
select   '002' as Pno, '2005/04/01' as Pdate  , 300,          0 union all
select   '001' as Pno, '2005/04/01' as Pdate  , 300,          0 union all
select   '002' as Pno, '2005/03/01' as Pdate  ,200,          0 union all
select   '001' as Pno, '2005/05/01' as Pdate ,  150  ,        0  union all
select   '002' as Pno, '2005/05/01' as Pdate ,  150  ,        0
order by Pno,Pdatedeclare @StkNum int
set @StkNum=0
declare @ProductNo nvarchar(10)
set @ProductNo=''
Update  tb  set  @StkNum=(case when @ProductNo<>ProductNo then Num else @StkNum+Num end),StkNum=@StkNum,@ProductNo=ProductNo from tb with(index=pk_tb)
goselect * from tb
godrop table tb請問update的時候是否按照id的順序一筆一筆進行
我有時候update的結果會亂,怎麼回事

解决方案 »

  1.   

    update时不可以排序,你select * from talbename
    这样出来的顺序就是你update时的逐行顺序。
    如果你需要按自己的顺序来update,那么可以借助临时表或者表变量,插入已排好序的记录,然后对这个中间表进行update,最后再更新到源表中。
      

  2.   

    sql的所有操作都可以理解为对集合的操作,没有顺序,
    除非你把集合的大小琐定到了一个记录,那才是一条条处理
      

  3.   

    update时要有条件的
    不可多用