alp*_*pav 5 sql t-sql sql-server identity sql-server-2005
我有一个表CreateDate datetime
字段default(getdate())
不具有任何标识列.
我想添加一个identity(1,1)
字段,它将现有记录的顺序与CreateDate
字段order by
相同(会产生相同的结果).我怎样才能做到这一点?
我想如果我在CreateDate
字段上创建聚簇键然后添加标识列它将起作用(不确定它是否有保证),是否有一个好/更好的方法?
我对SQL Server 2005感兴趣,但我想SQL Server 2008,SQL Server 2000的答案是相同的.
根据Remus的理论答案......你需要先按照理想的顺序生成一个列表
SELECT
ID, CreateDate
INTO
MyNewTable
FROM
(
SELECT
CreateDate,
ROW_NUMBER() OVER (ORDER BY CreateDate ASC) AS ID
FROM
MyTable
) foo
Run Code Online (Sandbox Code Playgroud)
然后,最好的解决方案是使用SSMS将IDENTITY属性添加到MyNewTable.SSMS将生成一个包含SET IDENTITY INSERT的脚本以保留订单
注意:IDENTITY列只是没有隐含含义的数字,在本练习之后,它们与CreateDate的对齐不能推断出任何内容......
归档时间: |
|
查看次数: |
5426 次 |
最近记录: |