sql 2000数据库表,序号更新并自动生成新的序号数字

时间:2022-07-23 04:00:49
sql 2000数据库表,序号更新并自动生成新的序号数字

表t_rm_payflow,字段com_no

现在该字段有相应的序号了,我想更新该字段的序号从:12345开始一直到有内容的最后,从12345这个序号开始,自动生成新的序号加1。例如:第1行的序号是12345,第2行的序号是12346,第3行的序号是12347,第4行的序号是12348,第5行的序号是12349,依次累加。






10 个解决方案

#1



create table test(com_no int, flow_id int)
go
insert into test values(1,1)
insert into test values(2,1)
insert into test values(3,1)
insert into test values(4,2)
insert into test values(5,2)
insert into test values(45,2)
insert into test values(60,2)
go
select identity(int,12345,1) id, com_no into test_bak from test ; 
go
update test set flow_id = test_bak.id 
from test, test_bak
where test.com_no = test_bak.com_no
go
select * from test 
go
drop table test , test_bak
go


com_no      flow_id
----------- -----------
1           12345
2           12346
3           12347
4           12348
5           12349
45          12350
60          12351

(7 行受影响)


#2


引用 1 楼 wmxcn2000 的回复:

create table test(com_no int, flow_id int)
go
insert into test values(1,1)
insert into test values(2,1)
insert into test values(3,1)
insert into test values(4,2)
insert into test values(5,2)
insert into test values(45,2)
insert into test values(60,2)
go
select identity(int,12345,1) id, com_no into test_bak from test ; 
go
update test set flow_id = test_bak.id 
from test, test_bak
where test.com_no = test_bak.com_no
go
select * from test 
go
drop table test , test_bak
go


com_no      flow_id
----------- -----------
1           12345
2           12346
3           12347
4           12348
5           12349
45          12350
60          12351

(7 行受影响)




更新com_no列现有的数字,并自动生成新的序号。
例如:第1行com_no的序号是12345,第2行com_no的序号是12346,第3行com_no的序号是12347,第4行com_no的序号是12348,第5行的序号是12349,依次累加。

#3


引用 2 楼 szlixiaolong 的回复:
更新com_no列现有的数字,并自动生成新的序号。
例如:第1行com_no的序号是12345,第2行com_no的序号是12346,第3行com_no的序号是12347,第4行com_no的序号是12348,第5行的序号是12349,依次累加。


-- 改成这样,你比我还懒。。。

update test set com_no= test_bak.id 
from test, test_bak
where test.com_no = test_bak.com_no

#4


引用 1 楼 wmxcn2000 的回复:

create table test(com_no int, flow_id int)
go
insert into test values(1,1)
insert into test values(2,1)
insert into test values(3,1)
insert into test values(4,2)
insert into test values(5,2)
insert into test values(45,2)
insert into test values(60,2)
go
select identity(int,12345,1) id, com_no into test_bak from test ; 
go
update test set flow_id = test_bak.id 
from test, test_bak
where test.com_no = test_bak.com_no
go
select * from test 
go
drop table test , test_bak
go


com_no      flow_id
----------- -----------
1           12345
2           12346
3           12347
4           12348
5           12349
45          12350
60          12351

(7 行受影响)




select identity(int,12345,1) id, com_no into test_bak from t_rm_payflow ;
运行以上SQL后,提示:无法使用 SELECT INTO 语句向表 'test_bak' 中添加标识列,该表中已有继承了标识属性的列 'com_no'。

#5


引用 3 楼 wmxcn2000 的回复:
Quote: 引用 2 楼 szlixiaolong 的回复:

更新com_no列现有的数字,并自动生成新的序号。
例如:第1行com_no的序号是12345,第2行com_no的序号是12346,第3行com_no的序号是12347,第4行com_no的序号是12348,第5行的序号是12349,依次累加。


-- 改成这样,你比我还懒。。。

update test set com_no= test_bak.id 
from test, test_bak
where test.com_no = test_bak.com_no




CREATE TABLE [t_rm_payflow] (
[com_no] [numeric](16, 0) IDENTITY (1, 1) NOT NULL ,
[flow_id] [numeric](3, 0) NOT NULL ,
[flow_no] [char] (14) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[sale_amount] [numeric](16, 4) NULL CONSTRAINT [DF__t_rm_payf__sale___231F2AE2] DEFAULT (0),
[branch_no] [char] (6) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[pay_way] [char] (3) COLLATE Chinese_PRC_CI_AS NULL ,
[sell_way] [char] (1) COLLATE Chinese_PRC_CI_AS NOT NULL CONSTRAINT [DF__t_rm_payf__sell___24134F1B] DEFAULT ('A'),
[card_no] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[vip_no] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[coin_no] [char] (3) COLLATE Chinese_PRC_CI_AS NOT NULL CONSTRAINT [DF__t_rm_payf__coin___25077354] DEFAULT ('RMB'),
[coin_rate] [numeric](10, 4) NULL ,
[pay_amount] [numeric](16, 4) NULL CONSTRAINT [DF__t_rm_payf__pay_a__25FB978D] DEFAULT (0),
[oper_date] [datetime] NULL ,
[oper_id] [char] (4) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[counter_no] [char] (4) COLLATE Chinese_PRC_CI_AS NULL ,
[sale_man] [char] (4) COLLATE Chinese_PRC_CI_AS NULL ,
[memo] [varchar] (255) COLLATE Chinese_PRC_CI_AS NULL ,
[voucher_no] [char] (14) COLLATE Chinese_PRC_CI_AS NULL ,
[remote_flag] [char] (1) COLLATE Chinese_PRC_CI_AS NULL ,
[exchange_flag] [char] (1) COLLATE Chinese_PRC_CI_AS NULL CONSTRAINT [DF__t_rm_payf__excha__26EFBBC6] DEFAULT ('0'),
[shift_no] [char] (9) COLLATE Chinese_PRC_CI_AS NULL ,
[com_flag] [char] (1) COLLATE Chinese_PRC_CI_AS NULL CONSTRAINT [DF__t_rm_payf__com_f__27E3DFFF] DEFAULT ('0'),
[posid] [char] (4) COLLATE Chinese_PRC_CI_AS NULL ,
[uptime] [datetime] NULL ,
[flowno_rand] [char] (14) COLLATE Chinese_PRC_CI_AS NULL ,
[ciceroni_no] [varchar] (10) COLLATE Chinese_PRC_CI_AS NULL CONSTRAINT [DF__t_rm_payf__cicer__039C5DE8] DEFAULT (0),
[ciceroni_id] [varchar] (6) COLLATE Chinese_PRC_CI_AS NULL ,
[flowno_type] [char] (1) COLLATE Chinese_PRC_CI_AS NOT NULL CONSTRAINT [DF__t_rm_payf__flown__1022FBB5] DEFAULT ('0'),
CONSTRAINT [PK_T_RM_PAYFLOW] PRIMARY KEY  CLUSTERED 
(
[com_no]
)  ON [PRIMARY] 
) ON [PRIMARY]
GO


#6


你按我给你的例子改,有什么具体的问题吗 ?

#7


引用 6 楼 wmxcn2000 的回复:
你按我给你的例子改,有什么具体的问题吗 ?



select identity(int,12345,1) id, com_no into test_bak from t_rm_payflow ;
运行以上SQL后,提示:无法使用 SELECT INTO 语句向表 'test_bak' 中添加标识列,该表中已有继承了标识属性的列 'com_no'。


#8


-- 原表已有  identity 了,把这个简单的加工一下

select identity(int,12345,1) id, com_no +0 com_no into test_bak from t_rm_payflow ;

#9


用sql server 2005,用row_number就方便很多。

#10


引用 8 楼 wmxcn2000 的回复:
-- 原表已有  identity 了,把这个简单的加工一下

select identity(int,12345,1) id, com_no +0 com_no into test_bak from t_rm_payflow ;



感谢。

#1



create table test(com_no int, flow_id int)
go
insert into test values(1,1)
insert into test values(2,1)
insert into test values(3,1)
insert into test values(4,2)
insert into test values(5,2)
insert into test values(45,2)
insert into test values(60,2)
go
select identity(int,12345,1) id, com_no into test_bak from test ; 
go
update test set flow_id = test_bak.id 
from test, test_bak
where test.com_no = test_bak.com_no
go
select * from test 
go
drop table test , test_bak
go


com_no      flow_id
----------- -----------
1           12345
2           12346
3           12347
4           12348
5           12349
45          12350
60          12351

(7 行受影响)


#2


引用 1 楼 wmxcn2000 的回复:

create table test(com_no int, flow_id int)
go
insert into test values(1,1)
insert into test values(2,1)
insert into test values(3,1)
insert into test values(4,2)
insert into test values(5,2)
insert into test values(45,2)
insert into test values(60,2)
go
select identity(int,12345,1) id, com_no into test_bak from test ; 
go
update test set flow_id = test_bak.id 
from test, test_bak
where test.com_no = test_bak.com_no
go
select * from test 
go
drop table test , test_bak
go


com_no      flow_id
----------- -----------
1           12345
2           12346
3           12347
4           12348
5           12349
45          12350
60          12351

(7 行受影响)




更新com_no列现有的数字,并自动生成新的序号。
例如:第1行com_no的序号是12345,第2行com_no的序号是12346,第3行com_no的序号是12347,第4行com_no的序号是12348,第5行的序号是12349,依次累加。

#3


引用 2 楼 szlixiaolong 的回复:
更新com_no列现有的数字,并自动生成新的序号。
例如:第1行com_no的序号是12345,第2行com_no的序号是12346,第3行com_no的序号是12347,第4行com_no的序号是12348,第5行的序号是12349,依次累加。


-- 改成这样,你比我还懒。。。

update test set com_no= test_bak.id 
from test, test_bak
where test.com_no = test_bak.com_no

#4


引用 1 楼 wmxcn2000 的回复:

create table test(com_no int, flow_id int)
go
insert into test values(1,1)
insert into test values(2,1)
insert into test values(3,1)
insert into test values(4,2)
insert into test values(5,2)
insert into test values(45,2)
insert into test values(60,2)
go
select identity(int,12345,1) id, com_no into test_bak from test ; 
go
update test set flow_id = test_bak.id 
from test, test_bak
where test.com_no = test_bak.com_no
go
select * from test 
go
drop table test , test_bak
go


com_no      flow_id
----------- -----------
1           12345
2           12346
3           12347
4           12348
5           12349
45          12350
60          12351

(7 行受影响)




select identity(int,12345,1) id, com_no into test_bak from t_rm_payflow ;
运行以上SQL后,提示:无法使用 SELECT INTO 语句向表 'test_bak' 中添加标识列,该表中已有继承了标识属性的列 'com_no'。

#5


引用 3 楼 wmxcn2000 的回复:
Quote: 引用 2 楼 szlixiaolong 的回复:

更新com_no列现有的数字,并自动生成新的序号。
例如:第1行com_no的序号是12345,第2行com_no的序号是12346,第3行com_no的序号是12347,第4行com_no的序号是12348,第5行的序号是12349,依次累加。


-- 改成这样,你比我还懒。。。

update test set com_no= test_bak.id 
from test, test_bak
where test.com_no = test_bak.com_no




CREATE TABLE [t_rm_payflow] (
[com_no] [numeric](16, 0) IDENTITY (1, 1) NOT NULL ,
[flow_id] [numeric](3, 0) NOT NULL ,
[flow_no] [char] (14) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[sale_amount] [numeric](16, 4) NULL CONSTRAINT [DF__t_rm_payf__sale___231F2AE2] DEFAULT (0),
[branch_no] [char] (6) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[pay_way] [char] (3) COLLATE Chinese_PRC_CI_AS NULL ,
[sell_way] [char] (1) COLLATE Chinese_PRC_CI_AS NOT NULL CONSTRAINT [DF__t_rm_payf__sell___24134F1B] DEFAULT ('A'),
[card_no] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[vip_no] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[coin_no] [char] (3) COLLATE Chinese_PRC_CI_AS NOT NULL CONSTRAINT [DF__t_rm_payf__coin___25077354] DEFAULT ('RMB'),
[coin_rate] [numeric](10, 4) NULL ,
[pay_amount] [numeric](16, 4) NULL CONSTRAINT [DF__t_rm_payf__pay_a__25FB978D] DEFAULT (0),
[oper_date] [datetime] NULL ,
[oper_id] [char] (4) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[counter_no] [char] (4) COLLATE Chinese_PRC_CI_AS NULL ,
[sale_man] [char] (4) COLLATE Chinese_PRC_CI_AS NULL ,
[memo] [varchar] (255) COLLATE Chinese_PRC_CI_AS NULL ,
[voucher_no] [char] (14) COLLATE Chinese_PRC_CI_AS NULL ,
[remote_flag] [char] (1) COLLATE Chinese_PRC_CI_AS NULL ,
[exchange_flag] [char] (1) COLLATE Chinese_PRC_CI_AS NULL CONSTRAINT [DF__t_rm_payf__excha__26EFBBC6] DEFAULT ('0'),
[shift_no] [char] (9) COLLATE Chinese_PRC_CI_AS NULL ,
[com_flag] [char] (1) COLLATE Chinese_PRC_CI_AS NULL CONSTRAINT [DF__t_rm_payf__com_f__27E3DFFF] DEFAULT ('0'),
[posid] [char] (4) COLLATE Chinese_PRC_CI_AS NULL ,
[uptime] [datetime] NULL ,
[flowno_rand] [char] (14) COLLATE Chinese_PRC_CI_AS NULL ,
[ciceroni_no] [varchar] (10) COLLATE Chinese_PRC_CI_AS NULL CONSTRAINT [DF__t_rm_payf__cicer__039C5DE8] DEFAULT (0),
[ciceroni_id] [varchar] (6) COLLATE Chinese_PRC_CI_AS NULL ,
[flowno_type] [char] (1) COLLATE Chinese_PRC_CI_AS NOT NULL CONSTRAINT [DF__t_rm_payf__flown__1022FBB5] DEFAULT ('0'),
CONSTRAINT [PK_T_RM_PAYFLOW] PRIMARY KEY  CLUSTERED 
(
[com_no]
)  ON [PRIMARY] 
) ON [PRIMARY]
GO


#6


你按我给你的例子改,有什么具体的问题吗 ?

#7


引用 6 楼 wmxcn2000 的回复:
你按我给你的例子改,有什么具体的问题吗 ?



select identity(int,12345,1) id, com_no into test_bak from t_rm_payflow ;
运行以上SQL后,提示:无法使用 SELECT INTO 语句向表 'test_bak' 中添加标识列,该表中已有继承了标识属性的列 'com_no'。


#8


-- 原表已有  identity 了,把这个简单的加工一下

select identity(int,12345,1) id, com_no +0 com_no into test_bak from t_rm_payflow ;

#9


用sql server 2005,用row_number就方便很多。

#10


引用 8 楼 wmxcn2000 的回复:
-- 原表已有  identity 了,把这个简单的加工一下

select identity(int,12345,1) id, com_no +0 com_no into test_bak from t_rm_payflow ;



感谢。