Plsql 控制升级顺序的排序方法

Plsql 控制升级顺序的排序方法,plsql,plsqldeveloper,Plsql,Plsqldeveloper,我有这张桌子 seq Name Last_Name 1拉里·奥尔森 2约翰·沙利文 3安娜·费雷尔 例如,我试着把拉里的序列号改为2,那么约翰应该满1岁,同样,如果我把拉里的序列号改为3,那么约翰将是1,安娜是2。我想做的是使用嵌套表,但我很难嵌套两个表。不,听着,如果你知道一个简单的方法,我会很感激。如果序列号来自一个序列,并且你移动了这些值,请确保不要创建新的数字,否则你会打破限制 使用临时表,将行从tab1(实际表)移动到tmptab临时表。更新tmptab中的数据。从tab1中删除这些行

我有这张桌子

seq Name Last_Name

1拉里·奥尔森

2约翰·沙利文

3安娜·费雷尔


例如,我试着把拉里的序列号改为2,那么约翰应该满1岁,同样,如果我把拉里的序列号改为3,那么约翰将是1,安娜是2。我想做的是使用嵌套表,但我很难嵌套两个表。不,听着,如果你知道一个简单的方法,我会很感激。

如果序列号来自一个序列,并且你移动了这些值,请确保不要创建新的数字,否则你会打破限制

使用临时表,将行从tab1(实际表)移动到tmptab临时表。更新tmptab中的数据。从tab1中删除这些行,然后从tmptab中插入它们

在没有嵌套表的情况下尝试此操作:首先在虚拟表上进行tab1和tmptab警告练习

create table tmptab as
(select * from tab1 where seq <= 3);

update tmptab set seq =1 where name='Ana';
update tmptab set seq =2 where name='John';  -- this is just an example
commit;

delete from tab1 where seq<=3;

insert into tab1
values(seq, Name, Last_Name)
select seq, Name, Last_Name
from tmptab;

commit;

drop table tmptab;