生成唯一值
回答
根据您使用的SQL Server版本,您可以使用TOP或SET ROWCOUNT将UPDATE限制为单行。像这样的东西将工作:
select top 1 * from sysobjects
WHILE @@ROWCOUNT > 0
BEGIN
UPDATE TOP 1 Keys SET Key = (SELECT MAX(Key) from Keys)+1 WHERE Key is null
END
但是不理想。我想不出另一种处理重复行的方法 - 除非这是一次性任务,在这种情况下,临时添加一个IDENTITY列将会起作用。
你能解释一下吗? – 2010-11-15 10:39:11
@Nadeem - 不确定你想要解释哪个部分。如果您尝试了它并且无法正常工作,那么会产生什么类型的错误?对于其他方面,如果您在问题中添加了更多信息,则会更好。你使用的是什么版本的SQL?这是一次性任务,还是定期运行?如果定期,是否有一个原因,为什么无法预防NULL摆在首位。 – 2010-11-15 10:50:33
+1为“添加标识列”,正确的答案和正确的方法 – smirkingman 2010-11-15 11:07:20
如果你可以把数据(暂时)到一个单独的表,你可以使用ROW_COUNT():
declare @Keys table ([Key] int not null, [Name] varchar(50) null);
insert into @Keys ([Key], [Name])
select [Key], [Name]
from [Keys]
where [Key] is not null
union all
select [Key] = row_number() over (order by [Name]) +
(select max([Key]) from [Keys]),
[Name]
from [Keys]
where [Key] is null;
truncate table [Keys];
insert into [Keys] select * from @Keys;
- 1. SQL Server生成唯一值
- 2. 生成唯一
- 3. MySQL自动生成唯一文本值?
- 4. 宾果游戏板:生成唯一值
- 5. System.Guid.NewGuid()如何生成唯一值?
- 6. 生成随机,唯一的值C#
- 7. 生成唯一塞在Django
- 8. C生成唯一的ID
- 9. 生成唯一密钥
- 10. 生成唯一的密钥
- 11. 生成唯一的ID
- 12. 唯一事件ID生成
- 13. 不生成唯一的GUID
- 14. 生成C#长唯一ID
- 15. 唯一引脚生成器
- 16. 唯一密钥生成
- 17. 生成唯一订单号
- 18. 生成唯一对象ID
- 19. 生成唯一编号
- 20. 生成唯一名称?
- 21. sql - 为每一行生成一个唯一的随机值
- 22. Oracle - 为每个唯一列值生成唯一行并将行转换为列
- 23. 生成一个唯一的数字
- 24. 生成一个唯一的主键
- 25. 生成一个唯一的ID
- 26. 生成一个唯一的机器ID
- 27. 从一组值中生成唯一的ID
- 28. 如何创建一个用于生成唯一值的新SequenceGenerator?
- 29. 为每个数组值生成一个唯一的随机数
- 30. Excel VBA:基于一列中的唯一值生成fxls文件
是表的整体结构?没有身份字段?你想重复'名称'与不同的'钥匙'? – Oded 2010-11-15 10:22:41
从所提供的示例中,并未完全指定您希望如何执行此操作。你想指定3,4的顺序是什么? – Unreason 2010-11-15 10:23:38
是的我想要不同的键值为相同的名称。 – 2010-11-15 10:24:24