首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何重新排列某些列的数值数据?

如何重新排列某些列的数值数据?
EN

Stack Overflow用户
提问于 2014-11-07 12:15:32
回答 3查看 68关注 0票数 0

我要做的是重新排列列中的数值数据,例如BookID。如果我有这样的数据列:

代码语言:javascript
运行
复制
BookID ; BookTitle
  1         name1
  4         name2
 11        name3

我怎样才能重新排列成这样:

代码语言:javascript
运行
复制
BookID ; BookTitle
 0         name1
 1         name2
 2         name3
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-11-07 12:16:47

这是你想要的吗?

代码语言:javascript
运行
复制
select row_number() over (order by BookId) - 1 as BookId, BookTitle
from books b;

如果要更改数据中的ids,可以这样做。但是,这是不推荐的。行上的主键不需要有任何意义。例如,它用于其他表中的外键引用,如果您更改了原始表中的值,则还需要在那里更改它。

票数 1
EN

Stack Overflow用户

发布于 2014-11-07 12:26:45

按顺序更新BookID。使用下面的更新查询。

代码语言:javascript
运行
复制
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
票数 0
EN

Stack Overflow用户

发布于 2014-11-07 12:44:03

可以使用公共表表达式和排序函数重新编号:

代码语言:javascript
运行
复制
;WITH ranked AS
(
    SELECT BookID
    , NewBookID = ROW_NUMBER() OVER (ORDER BY BookTitle) -1
    FROM books
)
UPDATE ranked
SET BookID = NewBookID;

按预期结果修改

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26801084

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档