H. *_*lyn 0 sql-server update sql-server-2014
如何遍历 SQL Server 表中的所有行并编辑列?你知道的:
creatie每次一分钟都必须对该列进行编辑。所以第一个必须是 15:00:00,第二个 15:01:00,第三个 15:02:00 等等。我使用了下面的查询,但最大 ID 是 24697...所以循环很长。
declare @var datetime = '2015-10-19 0:0:0';
declare @counter int = 1;
declare @max int = (select max(id) from topic);
while (@counter <= @max) begin
update Topic set Creatie = Creatie + @var where id = @counter;
set @counter += 1;
set @var += '0-0-0 0:1:0'
end;
Run Code Online (Sandbox Code Playgroud)
因为我每次都这样做@var += '0-0-0 0:1:0',我不知道 24697 次后的结果是什么(如果它有效)。
这是前 25 行。
PS1:2131年是我自己的错误。不要看它并使用2015年。
PS2:我使用 24 小时时钟。
不,不要循环。每当您在 SQL 中想到“我需要遍历这个集合并对每一行做一些事情”时,将您的想法更改为“我需要对这个集合中的每一行做一些事情”。
DECLARE @start SMALLDATETIME = '2015-08-06T15:00:00';
;WITH x AS
(
SELECT id, creatie, rn = ROW_NUMBER() OVER (ORDER BY id) - 1
FROM dbo.Topic
--WHERE creatie = '2131-08-06T15:00:00'
)
SELECT id, creatie, DATEADD(MINUTE, rn, @start) FROM x ORDER BY id;
-- UPDATE x SET creatie = DATEADD(MINUTE, rn, @start);
Run Code Online (Sandbox Code Playgroud)
当您对这符合您的期望感到高兴时,请注释SELECT并取消注释UPDATE.
| 归档时间: |
|
| 查看次数: |
18517 次 |
| 最近记录: |