在SQLIte中,我希望用数字序列对特定列中的值重新编号。例如,这些行中的相关性列:
relevance | value
-------------------
3 | value1
5 | valueb
8 | valuex
9 | valueaa必须从1开始更新,增量1:
relevance | value
-------------------
1 | value1
2 | valueb
3 | valuex
4 | valueaa我要找的是这样的东西:
-- 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没有对每一行进行评估:
UPDATE MyTable SET relevance = (SELECT Max(relevance ))+1;发布于 2020-04-07 11:01:45
首先创建一个临时表,在该表中您将从表中插入列relevance,并使用ROW_NUMBER()窗口函数使用新的序列插入另一列,然后从这个临时表中进行更新:
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;见演示。
https://stackoverflow.com/questions/61077931
复制相似问题