我要做的是重新排列列中的数值数据,例如BookID。如果我有这样的数据列:
BookID ; BookTitle
1 name1
4 name2
11 name3我怎样才能重新排列成这样:
BookID ; BookTitle
0 name1
1 name2
2 name3发布于 2014-11-07 12:16:47
这是你想要的吗?
select row_number() over (order by BookId) - 1 as BookId, BookTitle
from books b;如果要更改数据中的ids,可以这样做。但是,这是不推荐的。行上的主键不需要有任何意义。例如,它用于其他表中的外键引用,如果您更改了原始表中的值,则还需要在那里更改它。
发布于 2014-11-07 12:26:45
按顺序更新BookID。使用下面的更新查询。
UPDATE A SET A.BookID = B.NewBookID
FROM Books A
INNER JOIN (
SELECT BookID, NewBookID = ROW_NUMBER() OVER (ORDER BY BookTitle) - 1
FROM Books
) AS B
ON A.BookID = B.BookID发布于 2014-11-07 12:44:03
可以使用公共表表达式和排序函数重新编号:
;WITH ranked AS
(
SELECT BookID
, NewBookID = ROW_NUMBER() OVER (ORDER BY BookTitle) -1
FROM books
)
UPDATE ranked
SET BookID = NewBookID;按预期结果修改
https://stackoverflow.com/questions/26801084
复制相似问题