主要针对需要从另外一个表来更新本表的值的问题

    以下语句是用表YYXX中的电话和Email来更新Reader表中相应的数据,通过cert_id来匹配

    1. Update READER
    2. Set(tele,email) = (select tele,email From YYXX where READER.cert_id = YYXX.cert_id)
    3. 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)