主要针对需要从另外一个表来更新本表的值的问题
以下语句是用表YYXX中的电话和Email来更新Reader表中相应的数据,通过cert_id来匹配
Update READER
Set(tele,email) = (select tele,email From YYXX where READER.cert_id = YYXX.cert_id)
Where exists (select 1 from YYXX where READER.cert_id = YYXX.cert_id)
若提示错误:无法修改与非键值保存表对应的列
这是因为表 YYXX 还没有建立主键,需要建立主键后再执行上面的语句
要注意的是where条件必不可少,除非两个表的数据是一一对应的,不然遗漏掉where条件时oracle将会默认的把所有的值全部更新为空
2013年转专业学生数据更新语句
将数据导入到表changemajor 中
更新Reader表中的院系和代码字段
update READER
set (dept,r_dep_id) = (select dept,dept_id from changemajor where READER.cert_id = changemajor.cert_id)
Where exists (select 1 from changemajor where READER.cert_id = changemajor.cert_id)
更新READER_CERT表中的有效期
update READER_CERT
set (end_date) = (select end_date from changemajor where READER_CERT.cert_id = changemajor.cert_id )
Where exists (select 1 from changemajor where READER_CERT.cert_id = changemajor.cert_id)