CREATE TABLE [dbo].[Customer](
[CusNo] [nvarchar](20) NULL,
[CusName] [nvarchar](100) NULL,
[DateIn] [nvarchar](12) NULL,
[Add1] [nvarchar](255) NULL,
[TelNoH] [nvarchar](50) NULL,
[TelNoHP] [nvarchar](11) NULL,
[DisSR] [nvarchar](50) NULL,
[DisSL] [nvarchar](50) NULL,
[DisCR] [nvarchar](50) NULL,
[DisCL] [nvarchar](50) NULL,
[DisAR] [nvarchar](50) NULL,
[DisAL] [nvarchar](50) NULL,
[ReadSR] [nvarchar](50) NULL,
[ReadSL] [nvarchar](50) NULL,
[ReadCR] [nvarchar](50) NULL,
[ReadCL] [nvarchar](50) NULL,
[ReadAR] [nvarchar](50) NULL,
[ReadAL] [nvarchar](50) NULL,
[PD] [nvarchar](50) NULL,
[R] [nvarchar](50) NULL,
[L] [nvarchar](50) NULL,
[Remarks] [nvarchar](255) NULL,
[ConSR] [nvarchar](50) NULL,
[ConSL] [nvarchar](50) NULL,
[ConCR] [nvarchar](50) NULL,
[ConCL] [nvarchar](50) NULL,
[ConAR] [nvarchar](50) NULL,
[ConAL] [nvarchar](50) NULL,
[Lens] [nvarchar](50) NULL,
[Frame] [nvarchar](50) NULL,
[Amount] [nvarchar](50) NULL,
[LastUserUpdate] [nvarchar](15) NULL,
[LastUpdateDate] [nvarchar](max) NULL
) ON [PRIMARY]
我正在使用Microsoft SQL Server 2008,我有一个表Customer
,其中CustNo
列是主键。我有大约30,000行手动输入CustNo
。
我想更新所有CustNo
以1开头,并持续增加1直到完成记录。
我必须使用什么SQL查询?
答案 0 :(得分:2)
您可以在ROW_NUMBER
中使用CTE:
WITH CTE AS
(
SELECT CusNo, RN = ROW_NUMBER() OVER (ORDER BY CusNo)
FROM dbo.Customer
)
UPDATE CTE SET CusNo = RN
DEMO简化模型
但我也强烈建议遵循@marc_c建议使用正确的数据类型。
答案 1 :(得分:0)
是跟随marcs的建议。还有一件事,确保您的列cusno是一个标识列,这样您就不必再完成重新排列的整个过程。