假设我有下表:
id name age
John 23
Mary 22
Mike 25
etc etc
我想为每条记录生成id
列的连续编号。有谁可以帮助我?
很抱歉,如果我问过同样的问题。
答案 0 :(得分:1)
您可以使用ROW_NUMBER()
添加序号:
SELECT
id = ROW_NUMBER() OVER(ORDER BY (SELECT NULL)),
name,
age
FROM yourTable
答案 1 :(得分:1)
以下是如何通过CTE
更新表格的示例:
DECLARE @t TABLE ( ID INT, Name NVARCHAR(50) )
INSERT INTO @t
VALUES ( 3, 'a' ),
( 5, 'b' ),
( 10, 'c' )
SELECT * FROM @t;
WITH cte
AS ( SELECT ID ,
ROW_NUMBER() OVER ( ORDER BY ( SELECT 1 ) ) AS RN
FROM @t
)
UPDATE cte
SET ID = RN
SELECT * FROM @t
输出:
ID Name
3 a
5 b
10 c
ID Name
1 a
2 b
3 c
而不是
ROW_NUMBER() OVER ( ORDER BY ( SELECT 1 ) ) AS RN
你可以做到
ROW_NUMBER() OVER ( ORDER BY Name ) AS RN
通过在Name
列中排序来增加值。
答案 2 :(得分:0)
更改您的表格,然后添加标识,它将生成值
ALTER TABLE dbo.YourTable
Add id Int Identity(1, 1)