SQL 添加具有递增值的新可编辑(非标识)列

标签 sql sql-server t-sql

我有一个 SQL Server 表,我想向表中添加一个新列,用于自定义排序。不是标识列,因为我需要能够在创建后更改值。

我的 table 是

CREATE TABLE [dbo].[Ponies] (
    [Name] [nvarchar](50) NOT NULL
)

使用诸如[{Name: Rarity},{Name: Applejack}]之类的数据。

我希望我的 table 变成这样

CREATE TABLE [dbo].[Ponies] (
    [Name] [nvarchar](50) NOT NULL,
    [IndexNumber] [int] NOT NULL
)

我希望 alter 语句之后的数据类似于 [{Name: Rarity, IndexNumber:1},{Name: Applejack, IndexNumber:2}] 。要点是行的顺序可以在创建后更改,这意味着当添加新行时可以更改旧行的顺序。

如何执行 ALTER 语句以便为每个现有数据项添加增量 IndexNumber

最佳答案

试试这个:

ALTER TABLE dbo.Ponies
ADD IndexNumber INT IDENTITY(1,1) NOT NULL

这会向表中添加一个“身份”列 - 每行从 1 开始编号,以 1 递增。它将自动为所有插入的新行设置。

关于SQL 添加具有递增值的新可编辑(非标识)列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15408022/

相关文章:

mysql - 大选择字段选项限制了我的计数功能

c# - SqlConnection 在打开时挂起

sql - Stack Overflow 数据库 - 成对的用户系统地评论相同的帖子

sql - 简单的 SQL 选择所有匹配项

sql - 如何在同一个语句的where子句中使用like和 between?

sql - 数据库中大部分同步的两个或多个表

php - 在单行中按名称对列组的值进行计数

sql-server - 使用 dacpac 获取 T-SQL 输入和输出?

sql - 在 SQL 中使用 FOR XML 为同一属性选择多个值

sql - 使用 SQL 将行转换为列