我有一个包含两列的表,其中没有列是唯一的。我需要为每个用户单独自动增加列number
。
user | number
1 | 1
2 | 1
1 | 2
3 | 1
我能想到的唯一想法是搜索最后使用的数字并手动递增1。有更有效的方法吗?
答案 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);