日期:2014-05-19  浏览次数:20395 次

每次insert时,自动插入一个当前最大的序号,如何实现,要求一条语句实现?
每次insert时,自动插入一个当前最大的序号,如何实现,要求一条语句实现?
---------
有一个列,序号,要求每次增一(不能用自增列,因为这个序号是在当天自增,转天还要从1开始)
结构如:
日期,序号,XXXXXX

我知道,可是先取当前的最大序号,然后增一。可是我想用一条语句实现,即在插入的同时计算出最大序号,不知如何实现,谢谢先。

------解决方案--------------------
取最大序号
select 序号+1 from [tablename] a
where not exists(select 1 from [tablename] where 序号> a.序号)

或者像楼上这样用max
------解决方案--------------------
insert into 表1
select 日期,序号=select 序号=max(序号)+1 from 表1,XXXXXX from 表2
where 日期=???
------解决方案--------------------

--根据当前日期order自动增加1如果
--日期变了会又从1开始自动增加
drop table myTest

create table myTest(
[date] datetime ,[order] int ,[XXXXXX] nvarchar(100)
)
select * from myTest
insert myTest
select getdate(),(select case
(select count(*) from myTest where [date] like convert(nvarchar(12),getdate())+ '% ')
when 0 then 1

else
(select max([order])+1 from myTest where [date] like convert(nvarchar(12),getdate())+ '% ')
end
), 'xxxxxx '
select * from myTest



------解决方案--------------------
insert into table1 (月份,日期,序号)
select '200702 ', '25 ',(select MAX(isnull(序号,0))+1 from table1 where 月份= '200702 ' and 日期= '25 ')