Oracle用一个表的一个字段值去更新另一张表的某个字段值

时间:2022-11-12 15:03:27

我是这么写的:

 UPDATE TABLE1 T1 SET T1.COL11=
SUBSTR(
(SELECT TO_CHAR(T2.ENDTIME,'YYYYMMDD') FROM TABLE2 T2 WHERE T1.MAPCODE = T2.PROJECTID AND T2.MAPSHEETFLAG IS NULL),0,6)
WHERE EXISTS
(SELECT TO_CHAR(T2.ENDTIME,'YYYYMMDD') FROM TABLE2 T2 WHERE T1.MAPCODE = T2.PROJECTID AND T2.MAPSHEETFLAG IS NULL);


这里,表TABLE1即T1是图幅元数据表,表TABLE2即T2是范围线工程表。现在需要将T2的EndTime(包括年月日时分秒在内的完整的时间类型)格式化为YYYYMMDD形式,并取前6位,即年月(如201705),赋值给T1的COL1字段。赋值的条件是T1的MAPCODE与T2的PROJECTID相等,且T2的MAPSHEETFLAG标记值不为空,且查询结果存在。