如果在oracle中不知道下面这条语句行不?(注:不知道是不是rowno还是rowid忘记了反正是一个虚列) update abc set a=rowno;
怎么简单的问题都不知道,下面的语句就可以了: declare @n int set @n=0 //开始的序号; update wjw set aa=@n,@n=@n+1 //aa 是序号字段;
declare @n int set @n=0 //开始的序号; update wjw set aa=@n,@n=@n+1 //aa 是序号字段;
两种方法: 第一种在表中增加一字段(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,......
update abc set a=rowno;
declare @n int
set @n=0 //开始的序号; update wjw set aa=@n,@n=@n+1 //aa 是序号字段;
set @n=0 //开始的序号; update wjw set aa=@n,@n=@n+1 //aa 是序号字段;
第一种在表中增加一字段(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
(试试看吧,当然你可以增加事务)
set @n=0 //开始的序号; update wjw set aa=@n,@n=@n+1 //aa 是序号字段;还是这个最好!!