首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQLite:如何用数字序列更新行?

SQLite:如何用数字序列更新行?
EN

Stack Overflow用户
提问于 2020-04-07 10:29:39
回答 1查看 858关注 0票数 1

在SQLIte中,我希望用数字序列对特定列中的值重新编号。例如,这些行中的相关性列:

代码语言:javascript
复制
relevance | value
-------------------
3         | value1
5         | valueb
8         | valuex
9         | valueaa

必须从1开始更新,增量1:

代码语言:javascript
复制
relevance | value
-------------------
1         | value1
2         | valueb
3         | valuex
4         | valueaa

我要找的是这样的东西:

代码语言:javascript
复制
-- first set all to startvalue
UPDATE MyTable SET relevance = 0; 
-- then renumber:
UPDATE MyTable SET relevance = (some function to increase by 1 to the previous row);

我尝试过这样做,但它并没有增加,看起来Max没有对每一行进行评估:

代码语言:javascript
复制
UPDATE MyTable SET relevance = (SELECT Max(relevance ))+1;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-07 11:01:45

首先创建一个临时表,在该表中您将从表中插入列relevance,并使用ROW_NUMBER()窗口函数使用新的序列插入另一列,然后从这个临时表中进行更新:

代码语言:javascript
复制
drop table if exists temp.tmp;

create temporary table tmp as 
select relevance, row_number() over (order by relevance) rn
from MyTable;

update MyTable
set relevance = (
  select rn from temp.tmp
  where temp.tmp.relevance = MyTable.relevance
);

drop table temp.tmp;

演示

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

https://stackoverflow.com/questions/61077931

复制
相关文章

相似问题

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