生成唯一值
回答
根據您使用的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