表的数据如下:
RandomId ID NAME PATH
0 1 名称1
0 2 名称2
0 3 名称3
0 4 名称4
1 10 .0.1.6.10.
1 11 .0.1.6.11.
1 12 .0.2.6.12.
1 13 .0.2.6.13.
1 14 .0.3.6.14.
1 15 .0.3.6.15.
1 16 .0.3.6.16.
1 17 .0.4.6.17.
1 18 .0.4.6.18.
1 19 .0.4.6.19.
1 20 .0.1.6.20.说明:PATH字段中点与点之间的值为ID字段的值
请问如何用一个UPDATE语句将RandomId为0的记录的NAME字段的值更新到RandomId的值为1的记录的NAME中,条件是RandomId为1的记录的PATH值中存在RandomId为0的记录的ID的值???
也就是如何用一个UPDATE语句得到下面的结果:
RandomId ID NAME PATH
0 1 名称1
0 2 名称2
0 3 名称3
0 4 名称4
1 10 名称1 .0.1.6.10.
1 11 名称1 .0.1.6.11.
1 12 名称2 .0.2.6.12.
1 13 名称2 .0.2.6.13.
1 14 名称3 .0.3.6.14.
1 15 名称3 .0.3.6.15.
1 16 名称3 .0.3.6.16.
1 17 名称4 .0.4.6.17.
1 18 名称4 .0.4.6.18.
1 19 名称4 .0.4.6.19.
1 20 名称4 .0.1.6.20.
RandomId ID NAME PATH
0 1 名称1
0 2 名称2
0 3 名称3
0 4 名称4
1 10 .0.1.6.10.
1 11 .0.1.6.11.
1 12 .0.2.6.12.
1 13 .0.2.6.13.
1 14 .0.3.6.14.
1 15 .0.3.6.15.
1 16 .0.3.6.16.
1 17 .0.4.6.17.
1 18 .0.4.6.18.
1 19 .0.4.6.19.
1 20 .0.1.6.20.说明:PATH字段中点与点之间的值为ID字段的值
请问如何用一个UPDATE语句将RandomId为0的记录的NAME字段的值更新到RandomId的值为1的记录的NAME中,条件是RandomId为1的记录的PATH值中存在RandomId为0的记录的ID的值???
也就是如何用一个UPDATE语句得到下面的结果:
RandomId ID NAME PATH
0 1 名称1
0 2 名称2
0 3 名称3
0 4 名称4
1 10 名称1 .0.1.6.10.
1 11 名称1 .0.1.6.11.
1 12 名称2 .0.2.6.12.
1 13 名称2 .0.2.6.13.
1 14 名称3 .0.3.6.14.
1 15 名称3 .0.3.6.15.
1 16 名称3 .0.3.6.16.
1 17 名称4 .0.4.6.17.
1 18 名称4 .0.4.6.18.
1 19 名称4 .0.4.6.19.
1 20 名称4 .0.1.6.20.
解决方案 »
- 关于查询数据库中不存在的数据
- 装10G?
- 菜鸟级提问有关job的,为什么这段代码编译不了[代码很简单请高人们抬眼看看,拜托了]
- ORACLE和SQL SERVER的性能问题
- 怎么在oracle中声明变量和为变量赋值?
- .net和Oracle的安装有什么冲突的地方,谢谢,高手帮忙啊!!!
- 如何通过自己的oracle存储过程进行按用户模式的数据备份?
- 请教高手,求ORACLE LONG值长度的问题
- 可不可以用function或是procedure返回多条记录?
- Get Confused after recovering a non-archivelog database
- oracle存储过程中二维数组
- 请问如何察看或监视oracle高级复制所消耗的时间
SQL> insert into tmp_table values(0,1,'名称1','');1 row insertedSQL> insert into tmp_table values(0,2,'名称2','');1 row insertedSQL> insert into tmp_table values(0,3,'名称3','');1 row insertedSQL> insert into tmp_table values(0,4,'名称4','');1 row insertedSQL> insert into tmp_table values(1,10,'','.0.1.6.10.');1 row insertedSQL> insert into tmp_table values(1,11,'','.0.1.6.11.');1 row insertedSQL> insert into tmp_table values(1,12,'','.0.2.6.12.');1 row insertedSQL> insert into tmp_table values(1,13,'','.0.2.6.13.');1 row insertedSQL> insert into tmp_table values(1,14,'','.0.3.6.14.');1 row insertedSQL> insert into tmp_table values(1,15,'','.0.3.6.15.');1 row insertedSQL> insert into tmp_table values(1,16,'','.0.3.6.16.');1 row insertedSQL> insert into tmp_table values(1,17,'','.0.4.6.17.');1 row insertedSQL> insert into tmp_table values(1,18,'','.0.4.6.18.');1 row insertedSQL> insert into tmp_table values(1,19,'','.0.4.6.19.');1 row insertedSQL> insert into tmp_table values(1,20,'','.0.1.6.20.');1 row insertedSQL> commit;Commit completeSQL> select * from tmp_table;RANDOMID ID NAME PATH
-------------------- -------------------- -------------------- --------------------
0 1 名称1
0 2 名称2
0 3 名称3
0 4 名称4
1 10 .0.1.6.10.
1 11 .0.1.6.11.
1 12 .0.2.6.12.
1 13 .0.2.6.13.
1 14 .0.3.6.14.
1 15 .0.3.6.15.
1 16 .0.3.6.16.
1 17 .0.4.6.17.
1 18 .0.4.6.18.
1 19 .0.4.6.19.
1 20 .0.1.6.20.15 rows selectedSQL>
SQL> update tmp_table e
2 set e.name=
3 (select t.name from tmp_table t
4 where t.id=substr(e.path,4,1))
5 where e.randomid=1
6 ;11 rows updatedSQL> commit;Commit completeSQL> select * from tmp_table;RANDOMID ID NAME PATH
-------------------- -------------------- -------------------- --------------------
0 1 名称1
0 2 名称2
0 3 名称3
0 4 名称4
1 10 名称1 .0.1.6.10.
1 11 名称1 .0.1.6.11.
1 12 名称2 .0.2.6.12.
1 13 名称2 .0.2.6.13.
1 14 名称3 .0.3.6.14.
1 15 名称3 .0.3.6.15.
1 16 名称3 .0.3.6.16.
1 17 名称4 .0.4.6.17.
1 18 名称4 .0.4.6.18.
1 19 名称4 .0.4.6.19.
1 20 名称1 .0.1.6.20.15 rows selectedSQL>