SQL Server:单独的自动增量字段

时间:2015-06-25 14:05:10

标签: sql-server

我有一个包含两列的表,其中没有列是唯一的。我需要为每个用户单独自动增加列number

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

我能想到的唯一想法是搜索最后使用的数字并手动递增1。有更有效的方法吗?

3 个答案:

答案 0 :(得分:4)

您可以在表格中创建number字段(我称之为auto increment),而不是id字段,并通过查询获取所需的number字段:

首先添加id:

alter table table_name add id int not null IDENTITY(1,1)

您不再需要数字字段了:

alter table table_name drop column number

获取number的查询(您可以使用它来创建视图):

select user,
row_number() over(partition by user order by id) as number
from table_name

答案 1 :(得分:1)

搜索用户最大值并增加它。

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

自动增量的期限仅涵盖主键自动增量。有关详细信息,请参阅this page

答案 2 :(得分:1)

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

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