update 某一字段自动累加如何 我有一个表, 字段 TNum 是一个 数值字段, 我想让它从 650001开始自动增加,共蒸发30000条记录, 应该如何写这个UPDATE? 您指点一下? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 --既然是从650001开始自动增加,为何还要写UPDATE?--可以将该字段设为标识字段,起始值为650000,步长、增长为1,以后向表里插数据的时候,不插这列,数据会自动生成的。 declare @i intset @i=650001update tb set Tnum=@i,@i=@i+1共蒸发30000条记录,这句话不明白。 if object_id('tb') is not null drop table tbgocreate table tb([商品id] varchar(10),[进库日期] datetime,TNum int)insert tb select '1','2009-1-20',200insert tb select '1','2009-1-1',100insert tb select '2','2009-2-1',50insert tb select '2','2009-3-2',200insert tb select '2','2009-3-3',10insert tb select '2','2009-3-1',160godeclare @i intset @i=650000update tb set Tnum=@i,@i=@i+1select * from tb/*商品id 进库日期 TNum---------- ----------------------- -----------1 2009-01-20 00:00:00.000 6500011 2009-01-01 00:00:00.000 6500022 2009-02-01 00:00:00.000 6500032 2009-03-02 00:00:00.000 6500042 2009-03-03 00:00:00.000 6500052 2009-03-01 00:00:00.000 650006(6 行受影响)*/ 这个字段是 nvarchar 的字段属性 declare @i intset @i=1--650001开始自动增加,共蒸发30000条记录, while (@i<=30000)begin insert into tb (ID) values (650001+@i) set @i=@i+1end 谢谢这位大哥了, 我是 update,而且这个字段是字符型的 if object_id('tb') is not null drop table tbgocreate table tb([商品id] varchar(10),[进库日期] datetime,TNum varchar(20))insert tb select '1','2009-1-20',200insert tb select '1','2009-1-1',100insert tb select '2','2009-2-1',50insert tb select '2','2009-3-2',200insert tb select '2','2009-3-3',10insert tb select '2','2009-3-1',160godeclare @i intset @i=650000update tb set Tnum=ltrim(@i),@i=ltrim(@i+1)select * from tb/*商品id 进库日期 TNum---------- ----------------------- -----------1 2009-01-20 00:00:00.000 6500011 2009-01-01 00:00:00.000 6500022 2009-02-01 00:00:00.000 6500032 2009-03-02 00:00:00.000 6500042 2009-03-03 00:00:00.000 6500052 2009-03-01 00:00:00.000 650006(6 行受影响)*/ nvarchar也没问题,用ltrim将其隐式转为字符型就行了。 declare @i intset @i=650000120001update driver_repair set nationalnum=ltrim(@i),@i=ltrim(@i+1)select * from driver_repair服务器: 消息 8115,级别 16,状态 2,行 2将 expression 转换为数据类型 int 时发生算术溢出错误。(所影响的行数为 5111 行)(所影响的行数为 5111 行)这是为什么呀? try--declare @i bigint set @i=650000120001 update driver_repair set nationalnum=ltrim(@i),@i=ltrim(@i+1) select * from driver_repair declare @i bigint set @i=650000120001 update driver_repair set nationalnum=ltrim(@i),@i=ltrim(@i+1) select * from driver_repair declare @i bigint set @i=650000120000 --应该从这个数开始 update driver_repair set nationalnum=ltrim(@i),@i=ltrim(@i+1) select * from driver_repair 一sql语句报转换错误 如何快速复制一张表 求救 請高手幫忙介紹數據庫方面書本! 各位大哥请教一个关于SQL用户的问题 关于ROW_NUMBER()分页奇怪的问题 sql server安装sp3补丁时setup.bat无法运行 有一个24小时运行的数据库中有一张表,每秒新增20条左右的数据。我现在需要对这张表做统计的操作,比如某个时间段(时日月)的统计。 生产领料同一部门、批次领料同一货品先后顺序 请教一个SQL语句 高手!这一句要怎么写才对?急,在线 这样的系统能轻松运行SQL2005么? 关于实现"未阅"功能相关数据库的设计
--可以将该字段设为标识字段,起始值为650000,步长、增长为1,以后向表里插数据的时候,不插这列,数据会自动生成的。
set @i=650001
update tb set Tnum=@i,@i=@i+1
共蒸发30000条记录,这句话不明白。
drop table tb
go
create table tb([商品id] varchar(10),[进库日期] datetime,TNum int)
insert tb select '1','2009-1-20',200
insert tb select '1','2009-1-1',100
insert tb select '2','2009-2-1',50
insert tb select '2','2009-3-2',200
insert tb select '2','2009-3-3',10
insert tb select '2','2009-3-1',160
go
declare @i int
set @i=650000
update tb set Tnum=@i,@i=@i+1select * from tb
/*
商品id 进库日期 TNum
---------- ----------------------- -----------
1 2009-01-20 00:00:00.000 650001
1 2009-01-01 00:00:00.000 650002
2 2009-02-01 00:00:00.000 650003
2 2009-03-02 00:00:00.000 650004
2 2009-03-03 00:00:00.000 650005
2 2009-03-01 00:00:00.000 650006(6 行受影响)
*/
set @i=1
--650001开始自动增加,共蒸发30000条记录,
while (@i<=30000)
begin
insert into tb (ID) values (650001+@i)
set @i=@i+1
end
谢谢这位大哥了, 我是 update,而且这个字段是字符型的
if object_id('tb') is not null
drop table tb
go
create table tb([商品id] varchar(10),[进库日期] datetime,TNum varchar(20))
insert tb select '1','2009-1-20',200
insert tb select '1','2009-1-1',100
insert tb select '2','2009-2-1',50
insert tb select '2','2009-3-2',200
insert tb select '2','2009-3-3',10
insert tb select '2','2009-3-1',160
go
declare @i int
set @i=650000
update tb set Tnum=ltrim(@i),@i=ltrim(@i+1)select * from tb
/*
商品id 进库日期 TNum
---------- ----------------------- -----------
1 2009-01-20 00:00:00.000 650001
1 2009-01-01 00:00:00.000 650002
2 2009-02-01 00:00:00.000 650003
2 2009-03-02 00:00:00.000 650004
2 2009-03-03 00:00:00.000 650005
2 2009-03-01 00:00:00.000 650006(6 行受影响)
*/
set @i=650000120001
update driver_repair set nationalnum=ltrim(@i),@i=ltrim(@i+1)select * from driver_repair
服务器: 消息 8115,级别 16,状态 2,行 2
将 expression 转换为数据类型 int 时发生算术溢出错误。(所影响的行数为 5111 行)
(所影响的行数为 5111 行)
这是为什么呀?
declare @i bigint
set @i=650000120001
update driver_repair set nationalnum=ltrim(@i),@i=ltrim(@i+1) select * from driver_repair
declare @i bigint
set @i=650000120001
update driver_repair set nationalnum=ltrim(@i),@i=ltrim(@i+1) select * from driver_repair
set @i=650000120000 --应该从这个数开始
update driver_repair set nationalnum=ltrim(@i),@i=ltrim(@i+1) select * from driver_repair