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);