我有一张包含大量数据的表格.我想添加额外的第id列,并将其用作主键.用1row count之间的值填充此列的更好方法是什么

目前,我正在使用游标并逐个更新行.这需要几个小时.有没有办法更快地做到这一点?

谢谢你

推荐答案

就这样做吧:

ALTER TABLE dbo.YourTable
ADD ID INT IDENTITY(1,1)

该列将被创建并自动填充integer个值(正如Aaron Bertrand在他的 comments 中指出的——你无法控制哪一行得到什么值——SQL Server自己处理,你无法影响它.但所有行都将得到一个有效的int值——不会有任何NULL或重复值).

接下来,将其设置为主键:

ALTER TABLE dbo.YourTable
ADD CONSTRAINT PK_YourTable PRIMARY KEY(ID)

Sql相关问答推荐

跨多列的PostgreSQL非不同对

Trino/Presto sq:仅当空值位于组中第一个非空值之后时,才用值替换空值

我可以将INSERT语句与SELECT一起使用来创建条件吗?

更新在两个或多个面中具有交点的面

用于匹配红旗和绿旗的SQL查询

在Postgres中实现合并功能的干净方法,因为当目标/源不匹配时

如何在SQL中按每个子组的顺序更新数据?

NULL-生成的列中连接的字符串的输入

在SQL GROUP BY中的某些行之后执行计算

如何为该查询编写正确分区依据

提取连续时间戳范围的SQL

SQL仅返回第一个字母在A-Z之间的值

向表中添加新列取决于表的日期列(unpivot)

连续天跟踪购买情况(将标记返回到另一列?)

通过ID和数据找到每个不同的值

SQL:考虑合并分支计算分支的增长百分比

避免在SQL中使用具有相同条件的多个子查询

获取记录的上一个值,并将其与当前值一起显示

查询中获取审批者不起作用

try 将多行折叠为单个结果