我将整理后的excel表格供应商Email地址数据导入到专门建的临时“表AAA_EMAIL”(字段有org,pri,email,sita3),为了更新现有“供应商联系表organisationcomm”中的部分记录的相关字段(email,sita3),两张表采用联合主键org + pri 确定为唯一记录。表AAA_EMAIL共有206条记录,我做了与表organisationcomm的连接,显示有166条在表organisationcomm记录中是存在的,只需更新email,sita3两字段就行。另外40条则需要插入到表organisationcomm中。
我打算分两步做,第一步先更新表AAA_EMAIL在表organisationcomm中已有的记录,第二步做新增操作。更新操作,我想起上回做执行更新SQL语句时,Oracle会把条件匹配的记录做相应更新,但是找不到相应条件匹配的记录其字段却会被清空!!! 之前上网搜过,了解这是Oracle的特点,这个特点让我们写update语句都很麻烦。我测了如下的SQL语句,果然显示1886条记录被更新,1886条是organisationcomm表的记录总数,而按道理说应该只更新166条才对。
update organisationcomm o
set (email, sita3) =
(select t.email, t.sita3
from AAA_EMAIL t
where trim(t.org) = trim(o.organisation)
and trim(t.pri) &#