oracle 把一个字段的值更新另一个字段。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle 把一个字段的值更新另一个字段。相关的知识,希望对你有一定的参考价值。

如图所示 值1 为主键,值2为原值,值3为修改值,值2 的所有值更新为值3,但是为一对多的关系,请问大神怎么写SQL 数据库为ORACLE,求指点
,,
我是这样写的
-- tab3 只有一个字段,插入的是值2的值
-- tab2 只有2个字段,插入的是值1和修改值3的值
update tab1 a set 值2=(select 值2 from tab2 b where a.值1=b.值1 )
where exists (select 1 from tab2 b where a.值1=b.值1)
and a.值1 in (select a.值1 from tab2 a)
and cop_g_no in (select * from tab3 )
执行后报单行之查询返回多个行,求大神指点。
本人菜鸟才学习数据库,

你报的这个错,基本就是当a.值1=b.值1时,选出来的值2有两个或更多的结果,数据库一蒙圈,就不知道该给你更新哪个了。

如果你更新规则不复杂,可以

update tab1 a set 值2=(select min(值2) from tab2 b where a.值1=b.值1 ) --这个里的值2取最小值,当然也可以max取最大值,如果有其他规则的话就说明
where exists (select 1 from tab2 b where a.值1=b.值1)
and a.值1 in (select a.值1 from tab2 a)
and cop_g_no in (select * from tab3 )
参考技术A 这个挺容易的,使用update语句就可以完成了。例如:
用值2列更新值1列
update 表名 set 值1=值2

也可以加上条件进行过滤
update 表名 set 值1=值2 where 值1=***

也可以对值2进行处理,然后在赋值,比如截取一定的长度
update 表名 set 值1=substr(值2 ,5)where 值1=***

等等,诸如此类。追问

值2 更新值3 ,值1 不动,为主键查询,你的这种方法我试过,好像还行不行

oracle某表的一个字段有多值,怎么把这值变成多行,其它数据为一样

1.新建一个名为TEST表
2.向TEST表中添加数据
INSERT INTO TEST(STUDENT,COURSE,SCORE)
select '张三','语文',78 from dual union
select '张三','数学',87 from dual union
select '张三','英语',82 from dual union
select '张三','物理',90 from dual union
select '李四','语文',65 from dual union
select '李四','数学',77 from dual union
select '李四','英语',65 from dual union
select '李四','物理',85 from dual

列转行

方法··1:
select
Student,
sum(decode(Course, '数学', Score)) 数学,
sum(decode(Course, '物理', Score)) 物理,
sum(decode(Course, '英语', Score)) 英语,
sum(decode(Course, '语文', Score)) 语文
from
TEST
group by Student
方法2:
select
Student,
sum(case Course when '数学' then Score else null end) 数学,
sum(case Course when '物理' then Score else null end) 物理,
sum(case Course when '英语' then Score else null end) 英语,
sum(case Course when '语文' then Score else null end) 语文
from
TEST
group by Student
参考技术A 用unpivot或case when

以上是关于oracle 把一个字段的值更新另一个字段。的主要内容,如果未能解决你的问题,请参考以下文章

Mysql如果某个字段值存在则更新另一个字段的值为原值+100,命令应该如何写?

oracle sql语句 若某字段为空则更新此字段否则更新另一个字段,只用一个sql语句

MySQL 更新一个表里的字段等于另一个表某字段的值

SQL中如何遍历表并更新某个字段的值

更新一个表的字段值等于另一个表的字段值的SQL语句

Mysql如何更新字段值