Sql server SQL Server:自动增量字段分别为

Sql server SQL Server:自动增量字段分别为,sql-server,Sql Server,我有一个有两列的表,其中没有一列是唯一的。我需要为每个用户分别自动增加列编号 user | number 1 | 1 2 | 1 1 | 2 3 | 1 我唯一能想到的办法就是搜索最后使用的数字,然后手动递增一。有没有更有效的方法?搜索用户最大值并增加它 INSERT INTO YOUR_TABLE (user, number) SELECT (MAX(number) + 1) FROM YOUR_TABLE WHERE user = USER_ID “自动递增”

我有一个有两列的表,其中没有一列是唯一的。我需要为每个用户分别自动增加列
编号

user | number
1    | 1
2    | 1
1    | 2 
3    | 1

我唯一能想到的办法就是搜索最后使用的数字,然后手动递增一。有没有更有效的方法?

搜索用户最大值并增加它

INSERT INTO YOUR_TABLE (user, number) 
SELECT (MAX(number) + 1)
FROM YOUR_TABLE
WHERE user = USER_ID

“自动递增”一词仅包括主键自动递增。有关更多信息,请参见。

您可以在表中创建一个
自动递增
字段(我称之为
id
),并通过查询获得所需的
编号

首先添加id:

alter table table_name add id int not null IDENTITY(1,1)
您不再需要数字字段:

alter table table_name drop column number
获取编号的查询(您可以使用它创建视图):


您可以在两个查询中执行此操作:

userno-要插入的整数中的用户id

第一次写入(查询1),即如果表中已经有userno:

insert into table_name 
select userno,count(*) from table_name where user = userno 
group by user;
如果它返回空行,则只需写入(查询2),即它是要插入的新用户:

insert into table_name values(userno,1);

您可以编写一个计算自动增量的函数,并使[number]成为调用该函数的计算列。创建一个单独的表来保存每个用户的数字,至少如果当前表的行数比用户的行数多得多,这会更好
只有主键
我不太确定。我可以让非PK列具有自动递增的值OP已经注意到这是一个选项,并且正在寻找其他选项。
insert into table_name values(userno,1);