【发布时间】:2013-03-28 21:52:33
【问题描述】:
假设我有这个时间值:09:00:00
我有一个包含时间列的表,其中包含三条记录。
我想用那个时间更新这 3 条记录,但每次(对于每条记录)时间值都会增加一秒。
类似这样的:
ColumnA ColumnB
1 09:00:00
2 09:00:01
3 09:00:02
我该怎么做?
我的解决方案:
在我自己的解决方案工作了一段时间后,这就是我想出的
update tor1
set ColumnB = dateadd(s,tor2.inc, ColumnB)
from table1 tor1
inner join (select ColumnA, ROW_NUMBER() OVER (Order by ColumnA) as inc from table1) tor2 on tor1.ColumnA=tor2.ColumnA
【问题讨论】:
-
如果我们不能使用
ColumnA来订购,你如何建议我们知道哪一行加0秒,哪一行加1,哪一行加2?表是一组无序的行,因此如果您想要一个可预测的结果,您需要指明该顺序是如何定义的。 -
假设
ColumnA是PK,它是身份。现在假设第 2 条记录被删除了,你会给第 3 行加 2 秒吗? -
您是否在问自己自己的要求是什么?
-
我只想将秒 (1++) 添加到该列 B,而不管其他列。第一行,同一时间,第二行+1,第三行2,以此类推
-
@Somebody 既然你已经有了答案,那么十亿美元的问题就是你为什么要这样做?
标签: sql sql-server sql-server-2000