【发布时间】:2020-08-28 18:30:25
【问题描述】:
我有一个临时表需要更新,第一行已更新,但第二行更新为 null ,请帮助
declare @T Table
(
ID int,
Name nvarchar(20),
rownum int
)
insert into @T(ID,rownum)
select ID, rownum = ROW_NUMBER() OVER(order by id) from testtabel4
select * from testtabel4
update @t
set Name=case when rownum>1 then (select top 1 Name from @T x where x.rownum=(y.rownum-1))
else 'first' end
from @t y
select * from @T
这里是testtabel4的定义
CREATE TABLE [dbo].[testtabel4](
[ID] [int] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](80) NULL,
PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
这是输出
身份证名称 1 第一 2 空【问题讨论】:
-
你为什么要这样做;
y.rownum-1?这看起来像您的UPDATE中的问题
标签: sql sql-server sql-update case sql-insert