这个语句的描述是这样:有一个表 test 字段 id ,come, pid ;现在id自动生成, pid为空,想求一个语句能把 pid 的号码从 0 往下排 。注意 pid和id一点关系没有。
不能写 update test set pid = id+1 或者-1之类的。 因为pid 和id 一点关系都没有。。 怎么写那个语句。
------------------------------------
id come pid
1 2.00
2 2.00
3 2.00
4 2.00
5 2.00
6 2.00
7 2.00
8 2.00
9 2.00 谢谢了先
不能写 update test set pid = id+1 或者-1之类的。 因为pid 和id 一点关系都没有。。 怎么写那个语句。
------------------------------------
id come pid
1 2.00
2 2.00
3 2.00
4 2.00
5 2.00
6 2.00
7 2.00
8 2.00
9 2.00 谢谢了先
解决方案 »
- PL/SQL 编译老说“标示符出错”
- 求助,这个语句怎么改
- 求项目升级,数据优化方案
- 求教:如何将一个XML中的数据插入多张表?
- oracle 怎么查看 消耗内存最多的一条SQL。。。。。。。。。。。。。。。。。。。。。。。。。。。。
- 请教一个使用OCIDescribeAny函数的问题!
- 数据库从sql-server到oracle的转换
- oracle9i下create user 之后,为什么在 manager console下看不到相关的scheme?
- microsoft odbc for oracle 总是有问题
- 菜鳥問題﹕一個procedure 大家幫幫忙呀
- length函数影响性能问题
- ★急救★急救★,ORACLE删除数据后如何恢复!
SQL> with test as
2 (
3 select 1 id ,2.00 come,null pid from dual union all
4 select 2 id ,2.00 come,null pid from dual
5 )
6 select t.id,t.come,lag(id,1)over(order by t.id) pid from test t
7 ; ID COME PID
---------- ---------- ----------
1 2
2 2 1SQL>
SQL> with test as
2 (
3 select 1 id ,2.00 come,null pid from dual union all
4 select 2 id ,2.00 come,null pid from dual
5 )
6 select t.id,t.come,lag(id,1)over(order by t.id) pid from test t
7 ; ID COME PID
---------- ---------- ----------
1 2
2 2 1SQL>
select id ,come ,row_number() over(order by id) - 1 pid from tb
-------修改下
SQL>
SQL> with test as
2 (
3 select 1 id ,2.00 come,null pid from dual union all
4 select 2 id ,2.00 come,null pid from dual
5 )
6 select t.id,t.come,nvl(lag(id,1)over(order by t.id),0) pid from test t
7 ; ID COME PID
---------- ---------- ----------
1 2 0
2 2 1SQL>
SELECT * FROM test;
ID COME PID
----------------------
1 2
2 2
3 2
4 2
5 2
6 2
7 2
8 2
9 2 UPDATE test SET pid=ROWNUM-1 ; SELECT * FROM test;
ID COME PID
----------------------
1 2 0
2 2 1
3 2 2
4 2 3
5 2 4
6 2 5
7 2 6
8 2 7
9 2 8