当前位置:数据库 > Oracle >>

在oracle 数据库 中,如何在同张表内从查询到一行后将它修改到另一行?

在oracle 数据库 中,如何在同张表内从查询到一行后将它修改到另一行?新的一行主键已经创建。其他内容一致。 比如,查询到行 A: PID(主键)---名称---代号---步骤---效果图路径 0001 ----苹果4---IP4---下单中---D:\苹果图 现在已经有一行,主键已经创建好。 B: 0032(已经创建) ----空---空---空---空 修改后结果 B: 0032 ----苹果4---IP4---下单中---D:\苹果图 请问怎么用SQL语句完成以上的效果?
补充:A和B表示行A和行B,是在同一张表上操作,最后结果是,在同一张表上,出现主键不相同的的,但是其他信息相同的两个行。
追问:只针对单行数据的复制和修改。
可以以上面的情况写个范本存储过程么?
谢谢是在同一张表上操作。 A,和B是表示
行A,和行B
答案:这个估计得用存过程,或者事物来实现! 
如果是操作多条数据,在存储过程中建立一个索引 做个循环。
其他:恩  你我同意楼上 你看看 b表主键和a表主键有没有什么 数值上有没有规律 然后 在存储过程 中 用循环 按规律  对b表进行添加数据 UPDATE TABLE_NAME  
SET 名称    = (SELECT Y.名称	FROM TABLE_NAME Y WHERE PID = 0001),
		代号       = (SELECT Y.代号	FROM TABLE_NAME Y	WHERE PID = 0001),
		步骤       = (SELECT Y.步骤	FROM TABLE_NAME Y WHERE PID = 0001),
		效果图路径 = (SELECT Y.效果图路径	 FROM TABLE_NAME Y	 WHERE PID = 0001)
WHERE PID = 0032;
COMMIT; 

我特意创建了一个表,字段跟你描述的一样.经过测试才回答你的.
针对单行记录的更新操作,这个是最简单的.
其次因为需要处理的记录条数少.不会影响性能.再次,表的字段少,查询速度快.
   只是我是以ORACLE数据库来作为实例的,换成其他数据库,换下语法就OK了.
create table test_table
(
  PID   VARCHAR2(20),
  名称    VARCHAR2(20),
  代号    VARCHAR2(20),
  步骤    VARCHAR2(20),
  效果图路径 VARCHAR2(20)
);
INSERT INTO test_table(PID,名称,代号,步骤,效果图路径) VALUES ( '0001'    ,'苹果4','IP4','下单中','D:\苹果图');
INSERT INTO test_table(PID,名称,代号,步骤,效果图路径) VALUES ( '0032'    ,' ',' ',' ','  ');
COMMIT;
你可以试试,看我的正确不正确.
如果是SQLSERVER数据库,这样是手动执行的方式,
需要换成自动执行,就把这个SQL嵌套进存储过程中就OK了. 

上一个:向ORACLE数据库中插入数据后数据消失
下一个:oracle数据库表名和字段名可以有中文吗

Oracle
MySQL
Access
SQLServer
DB2
Excel
SQLite
SYBASE
Postgres
如果你遇到数据库难题:
请访问www.zzzyk.com 试试
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,