有1000条数据的表,怎样写UPDATE语句,才能给其中的一个整型字段写入顺序号。如第一条数据顺序号是501,第二条数据顺序号是502...

解决方案 »

  1.   

    语句怎么写?UPDATE好像不能将一个字段的值赋给其它字段。
      

  2.   

    如果在oracle中不知道下面这条语句行不?(注:不知道是不是rowno还是rowid忘记了反正是一个虚列)
    update abc set a=rowno;
      

  3.   

    怎么简单的问题都不知道,下面的语句就可以了:
    declare @n int 
    set @n=0   //开始的序号; update wjw set aa=@n,@n=@n+1  //aa 是序号字段;
      

  4.   

    declare @n int 
    set @n=0   //开始的序号; update wjw set aa=@n,@n=@n+1  //aa 是序号字段;
      

  5.   

    两种方法:
       第一种在表中增加一字段(ID,自动增加),然后你可以先:
       declare @n int --你需要的偏移量
       set @n=500--假设偏移量为500
       --以下处理数据update,假设你需更新的字段为:字段1
       update 表名 set 字段1=ID+@n
       //然后删除增加的字段ID
       第二种:利用游标实现(以Sql Server为例,前提没有重复记录)
    declare @n int,@field1 int,@field2 char(10).....
    --你需要取出的字段对应的变量,其中field1为你需要修改的字段
    DECLARE cursor1 CURSOR FOR 
    SELECT field1,field2.....
    FROM you_table
    WHERE 条件
    ORDER BY field1OPEN cursor1
    set @n=500--最初数据
    FETCH NEXT FROM cursor1 
    INTO @field1, @field2,......WHILE @@FETCH_STATUS = 0
    BEGIN
       update you_table set field1=@n where field1=@field1
       and field2=@field2 and ...... 
       set @n=@n+1 
       FETCH NEXT FROM cursor1 INTO @field1, @field2,......
       
    ENDCLOSE cursor1
    DEALLOCATE cursor1
    (试试看吧,当然你可以增加事务)
       
      

  6.   

    最好的方法是上面的,用游标的速度比较慢,最好不要用!!!!declare @n int 
    set @n=0   //开始的序号; update wjw set aa=@n,@n=@n+1  //aa 是序号字段;还是这个最好!!