让我把这两个表重新说一下,简单的。
TABLE1: sop_activity_headers
COLUMN1: eh_id 数值型 8
COLUMN2: users_last_name 字符型 16
DATA:
eh_id users_last_name
1 BLANK
1 BLANK
2 张三
3 李四
3 李四
4 王五
5 BLANK
6 BLANK
6 BLANK
6 BLANK
7 赵六TABLE2: rsm_activity_headers
COLUMN1: id 数值型 8
COLUMN2: patient_name 字符型 16
DATA:
id patient_name
1
2
3
4
5
6
7 现在要做的,就是用Table1的数据来更新Table2的patient_name列。谢谢!
TABLE1: sop_activity_headers
COLUMN1: eh_id 数值型 8
COLUMN2: users_last_name 字符型 16
DATA:
eh_id users_last_name
1 BLANK
1 BLANK
2 张三
3 李四
3 李四
4 王五
5 BLANK
6 BLANK
6 BLANK
6 BLANK
7 赵六TABLE2: rsm_activity_headers
COLUMN1: id 数值型 8
COLUMN2: patient_name 字符型 16
DATA:
id patient_name
1
2
3
4
5
6
7 现在要做的,就是用Table1的数据来更新Table2的patient_name列。谢谢!
解决方案 »
- Oracle中的package到底能做什么,有什么好处
- oracle11g的函数帮助文档在哪里
- 查询出现很多数据重复?
- 关于裸设备上的ORACLE问题,十分不解
- 请教各位高手触发器的写法
- Oracle导致CPU 100%!!!
- ==============PLSQL Developer中的问题==================
- 调用存储过程出错现象:在存储过程中使用not in ()方式引用传入字符型值(字符型值之间使用“,”分隔)时总是出错。对于传值应注意什么事
- 只要回答一个字(没有上限)?能否在delphi的应用程序里调用oracle的exp,imp,sql loader命令?
- “ORA-12560: TNS: 协议适配器错误”如何解决?
- 初学者弱弱的问个date的问题
- 问个两个表操作的问题
update rsm_activity_headers t1
set patient_name=(select distinct users_last_name from sop_activity_headers t2 where t1.eh_id=t2.id)
update rsm_activity_headers t1
set patient_name=
(select users_last_name from sop_activity_headers t2 where t1.eh_id=t2.id and rownum=1)
2 set patient_name=
3 (select users_last_name from sop_activity_headers t2 where t1.eh_id=t2.id and rownum=1)
4 /
(select users_last_name from sop_activity_headers t2 where t1.eh_id=t2.id and rownum=1)
*
ERROR 位于第3行:
ORA-00904: "T1"."EH_ID": invalid identifier
2 set patient_name=(select distinct users_last_name from sop_activity_headers t2 where t1.eh_id=
t2.id)
3 /
set patient_name=(select distinct users_last_name from sop_activity_headers t2 where t1.eh_id=t2.id
*
ERROR 位于第2行:
ORA-00904: "T1"."EH_ID": invalid identifier
select eh_id,users_last_name
from rsm_activity_headers rah,sop_activity_headers aah
where rah.id = aah.eh_id
group by eh_id,users_last_name
/这样子id,patient都唯一了。但我在用lsss表更新rsm_activity_headers表时,运行以下的语句,又出错了,快帮我看看吧。SQL> update rsm_activity_headers
2 set patient_name = (
3 select lsss.patient_name
4 from lsss,rsm_activity_headers
5 where lsss.id = rsm_activity_headers.id
6 )
7 /
select lsss.patient_name
*
ERROR 位于第3行:
ORA-01427: single-row subquery returns more than one row 怎么办啊?~~
SQL> update rsm_activity_headers
2 set patient_name = (
3 select lsss.patient_name
4 from lsss,rsm_activity_headers
5 where lsss.id = rsm_activity_headers.id and rownum=1--确定只出一行
6 )
7 /
解决方案:输入有效的列名。一个有效的列名必须是以字母开头,小于30个字符,并且只包含字母、数字或一些特殊的符号$,_,#。如果还包含其它的字符,那么这段字符必须用双引号引起来。列名不能是关键字。
我觉得2楼的语句没有问题
update rsm_activity_headers t1
set patient_name=(select distinct users_last_name from sop_activity_headers t2 where t1.eh_id=t2.id)
然后判断null的置为BLANKupdate rsm_activity_headers t1
set patient_name=
nvl((select users_last_name from sop_activity_headers t2 where t1.eh_id=t2.id and rownum=1
and users_last_name<>'BLANK'), 'BLANK')
2 set patient_name=
3 nvl((select users_last_name from sop_activity_headers t2 where t1.eh_id=t2.id and rownum=1
4 and users_last_name <>'BLANK'), 'BLANK')
5 /
nvl((select users_last_name from sop_activity_headers t2 where t1.eh_id=t2.id and rownum=1
*
ERROR 位于第3行:
ORA-00904: "T1"."EH_ID": invalid identifier
SQL> 还是出错,楼上的,请帮着改改吧
set t2.patient_name = (select users_last_name
from (select t1.eh_id, t1.users_last_name
from sop_activity_headers t1
group by t1.eh_id, t1.users_last_name)
where eh_id = t2.id)
where exists (select 1
from (select t1.eh_id, t1.users_last_name
from sop_activity_headers t1
group by t1.eh_id, t1.users_last_name)
where eh_id = t2.id);哈,已经在www.itpub.net上找到正解了,谢谢楼上的各位朋友,老师!