gpt4 book ai didi

sql-server - 在没有主键的表的新列上填充行号

转载 作者:行者123 更新时间:2023-12-02 21:08:43 25 4
gpt4 key购买 nike

我有一个表,我在其中添加一个新列来指示行号。该表没有任何关联的主键,因此我不确定如何用行号值填充它。

这是我放入 CTE 中的代码,但在主表中我不知道如何关联 Id 列。 Id 是新添加的列,我需要从该列开始编号。

;with CTE_RowNum as (
select
ROW_NUMBER() OVER (ORDER BY NEWID()) AS RowId
,Id
from dbo.Test
)

我可以在某些列上对表进行分区,但如何将这些条件与原始表连接起来?


编辑-这是我所指的架构。 Id 是新添加的列,我想将其填充为行号。名称和错误列一起形成唯一性。

预期输出是 -

1,ABC,Time Out Issue
2,ABC,Page Not Found
3,DEF,Page Not Found

顺序并不重要,我的意思是最后一行可以有“1”,其他行可以有其他值。

另一种方法是,我可以考虑将数据重新填充到插入了 Identity 的新表中,但只是想知道是否有办法通过 T-SQL 来做到这一点?

CREATE TABLE #Test
(
Id INT
,Name NVARCHAR(100)
,Error NVARCHAR(100)

)

INSERT INTO #Test (Name,Error) VALUES
('ABC','Time Out Issue')
,('ABC','Page Not Found')
,('DEF','Page Not Found')

最佳答案

其实很简单:

;WITH cte AS
(
SELECT Id, ROW_NUMBER() OVER (ORDER BY NEWID()) AS RowId
FROM #test
)

UPDATE cte
SET Id = RowId

关于sql-server - 在没有主键的表的新列上填充行号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34646655/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com